2017-02-20 36 views
1

pdfファイルの処理にApache pdfboxを使用しています。AWS Lambdaの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

こんにちはティルマン、チップのおかげで。ディレクトリを/ tmpに変更すると、エラーメッセージは表示されなくなります。メルシ – Max

答えて

1

あなたはそれを無効にすることはできませんが、メッセージは無害である、すなわち、それはあなたの仕事を止めるつもりはないが、あなたのフォントが再び見れますので、次回の実行が速くなりません。

あなたは、例えば、自分の書き込み権限のあるディレクトリにプロパティ「pdfbox.fontcache」を設定することができます/ tmp、これはAWS Lambdaのshould existです。

PDFBoxは最初に "pdfbox.fontcache"プロパティを調べます。もしそれが設定されていなければ、 "user.home"プロパティを探します(これはあなたのシステムで起こったことです)。 "java.io.tmpdir"プロパティを見て、フォントキャッシュを書き込むディレクトリを選択します。