2017-02-20 4 views
1

Ich benutze Apache pdfbox für die Verarbeitung von PDF-Dateien.PDFBox Caching in AWS Lambda

Es lokal ausgeführt wird, funktioniert gut, wo ich bekomme den Fehler ist bei der Ausführung des Codes auf AWS Lambda. Dies ist sinnvoll, da pdfbox versucht, den Font-Cache zu aktualisieren, was auf Lambda nicht möglich ist.

Ich erhalte die folgende Fehlermassage:

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 

Wie kann ich die Schriftart-Cache-Update deaktivieren? Hat jemand ein ähnliches Problem erlebt?

Danke!

+0

Sie können es nicht deaktivieren, aber die Nachricht ist harmlos, d. H. Es wird Ihre Arbeit nicht stoppen. Sie können die Eigenschaft "pdfbox.fontcache" in ein Verzeichnis setzen, in das Sie z./tmp. https://docs.aws.amazon.com/lambda/latest/dg/limits.html hilft das? –

+0

Hallo Tilman, danke für den Tipp. Nach dem Ändern des Verzeichnisses in/tmp wird die Fehlermeldung nicht mehr ausgegeben! Merci – Max

Antwort

1

Sie können es nicht deaktivieren, aber die Nachricht ist harmlos, d. H. Es wird Ihre Arbeit nicht stoppen, aber der nächste Lauf wird nicht schneller sein, weil Ihre Schriften erneut betrachtet werden.

Sie können die Eigenschaft "pdfbox.fontcache" in ein Verzeichnis setzen, in das Sie z./tmp, diese should exist auf AWS Lambda.

PDFBox betrachtet zuerst die "pdfbox.fontcache" -Eigenschaft, wenn diese nicht gesetzt ist, wird sie auf die "user.home" -Eigenschaft schauen (das ist, was auf Ihrem System passiert ist), wenn das nicht ist Setzen Sie es auf die Eigenschaft "java.io.tmpdir", um ein Verzeichnis zum Schreiben des Font-Caches auszuwählen.