2017-02-20 12 views
1

pdf 파일 처리에 Apache pdfbox를 사용하고 있습니다.AWS 람다에서 PDFBox 캐싱

로컬로 실행하면 AWS Lambda에서 코드를 실행하는 중에 오류가 발생합니다. pdfbox가 Lambda에서는 가능하지 않은 글꼴 캐시를 업데이트하려고 시도하므로 의미가 있습니다.

내가받을 다음과 같은 오류 마사지 :

가 어떻게 글꼴 캐시 업데이트를 비활성화 할 수 있습니다

Feb 20, 2017 3:22:19 PM org.apache.pdfbox.pdmodel.font.FileSystemFontProvider loadDiskCache 
WARNING: New fonts found, font cache will be re-built 
Feb 20, 2017 3:22:19 PM org.apache.pdfbox.pdmodel.font.FileSystemFontProvider <init> 
WARNING: Building on-disk font cache, this may take a while 
Feb 20, 2017 3:22:20 PM org.apache.pdfbox.pdmodel.font.FileSystemFontProvider saveDiskCache 
SEVERE: Could not write to font cache 

java.io.FileNotFoundException: /home/sbx_user1063/.pdfbox.cache (No such file or directory) 
at java.io.FileOutputStream.open0(Native Method) 
at java.io.FileOutputStream.open(FileOutputStream.java:270) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:213) 
at java.io.FileOutputStream.<init>(FileOutputStream.java:162) 
at java.io.FileWriter.<init>(FileWriter.java:90) 
at org.apache.pdfbox.pdmodel.font.FileSystemFontProvider.saveDiskCache(FileSystemFontProvider.java:290) 
at org.apache.pdfbox.pdmodel.font.FileSystemFontProvider.<init>(FileSystemFontProvider.java:226) 
at org.apache.pdfbox.pdmodel.font.FontMapperImpl$DefaultFontProvider.<clinit>(FontMapperImpl.java:130) 
at org.apache.pdfbox.pdmodel.font.FontMapperImpl.getProvider(FontMapperImpl.java:149) 
at org.apache.pdfbox.pdmodel.font.FontMapperImpl.findFont(FontMapperImpl.java:413) 
at org.apache.pdfbox.pdmodel.font.FontMapperImpl.findFontBoxFont(FontMapperImpl.java:376) 
at org.apache.pdfbox.pdmodel.font.FontMapperImpl.getFontBoxFont(FontMapperImpl.java:350) 
at org.apache.pdfbox.pdmodel.font.PDType1Font.<init>(PDType1Font.java:145) 
at org.apache.pdfbox.pdmodel.font.PDType1Font.<clinit>(PDType1Font.java:79) 
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:62) 
at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:143) 
at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60) 
at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:829) 
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:486) 
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:460) 
at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:150) 
at org.apache.pdfbox.text.LegacyPDFStreamEngine.processPage(LegacyPDFStreamEngine.java:139) 
at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:391) 
at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:319) 
at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:266) 
at org.apache.pdfbox.text.PDFTextStripper.getText(PDFTextStripper.java:227) 
at de.scdm.panther.ParsePdf.handleRequest(ParsePdf.java:59) 
at de.scdm.panther.ParsePdf.handleRequest(ParsePdf.java:22) 
at lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:375) 
at lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:1139) 
at lambdainternal.AWSLambda$2.call(AWSLambda.java:94) 
at lambdainternal.AWSLambda.startRuntime(AWSLambda.java:285) 
at lambdainternal.AWSLambda.<clinit>(AWSLambda.java:57) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:348) 
at lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:94) 

Feb 20, 2017 3:22:20 PM org.apache.pdfbox.pdmodel.font.FileSystemFontProvider <init> 
WARNING: Finished building on-disk font cache, found 52 fonts 
? 비슷한 문제가 발생 했습니까?

감사합니다.

+0

비활성화할 수는 없지만 메시지는 무해합니다. 즉, 작업이 중단되지 않습니다. "pdfbox.fontcache"속성을 쓸 수있는 디렉토리로 설정할 수 있습니다./tmp. https://docs.aws.amazon.com/lambda/latest/dg/limits.html이 도움이됩니까? –

+0

안녕 Tilman, 팁 주셔서 감사합니다. 디렉토리를/tmp로 변경하면 더 이상 오류 메시지가 표시되지 않습니다! Merci – Max

답변

1

비활성화 할 수는 없지만 작업이 중단되지는 않지만, 글꼴을 다시 보게되므로 다음 실행이 빨라지지는 않습니다.

"pdfbox.fontcache"속성을 쓸 수있는 디렉토리로 설정할 수 있습니다. 예 :/tmp, AWS Lambda의 should exist입니다.

PDFBox는 먼저 "pdfbox.fontcache"속성을 확인합니다.이 속성이 설정되어 있지 않으면 "user.home"속성 (시스템에서 발생한 것)을 봅니다. "java.io.tmpdir"속성을보고 글꼴 캐시를 쓸 디렉토리를 선택합니다.

관련 문제