fyi > Begin forwarded message: > > From: Oleg Krechowezki <[email protected]> > Subject: Re: Bug in NonSequentialPDFParser, v2.0 > Date: 10 August 2016 at 15:47:50 GMT+2 > To: Andreas Lehmkuehler <[email protected]> > > Hallo Andreas, > > ich habe bei mir den Issue gefixt: > COSName.NAMES Objekte können JavaScript enthalten, die von Adobe Reader auch > sofort ausgeführt werden. Das Test Doc hast Du erhalten: > … > 37 0 obj[36 0 R]endobj38 0 obj<</JavaScript 39 0 R>>endobj39 0 > obj<</Names[(docOpened)40 0 R]>>endobj40 0 obj<</S/JavaScript/JS 42 0 > R>>endobj41 0 obj 319endobj42 0 obj<</Length 41 0 > R/Filter[/FlateDecode]>>stream > H‰tRAjÃ0<Ûà?lu²¡Ø9J¯}Ã:ÚÄ*Šd¤UB(ùCŸÜ•\C’RÍìŒF8c08ZöÙ‚ËD<Q > í÷éDŽaÂ#‘?“#h¡¾‚à<7µŒ€q·€…²iê¦>$·gã]´Àm×Ô_ù¨2‡öQ/[P)áTBªªaxŒð™"ßçÈœlaŽ.ð†Lm·Yá˜÷r”ØØ~ƱnÕé4h=\e©WÐ]É > > OK|#1è,wþò—€óÜ£¥ÀÚ>q®Î¸(À"+CVg½Z"ñdb$~Ïx«Øk¼–ˆªëÏhSŽZö%S¹½ˆK’§¦dx. > ¢¸Š£§è¾ùW’<¢qMý¤ZëÍanò‘ô_Óë?–-ª[Î&ì=Zò“Ü?-¬ïÝÔw¨Øý0 š¹ > endstreamendobj43 0 obj<</Length 3427/Type/Metadata/Subtype/XML>>stream > ... > > dieser JS wird von Adobe (leider) bedenkenlos ausgeführt: > // variable to store whether document has been opened already or not > var bAlreadyOpened; > > function docOpened() > { > > if(bAlreadyOpened != "true") > { > // document has just been opened > var d = new Date(); > var sDate = util.printd("mm/dd/yyyy", d); > > // set date now > app.alert("About to insert date into field now"); > this.getField("todaysDate").value = sDate; > > // now set bAlreadyOpened to true so it doesnt > // run again > bAlreadyOpened = "true"; > } > else > { > // document has already been opened > } > } > > // call the docOpened() function > docOpened(); > > > > Daher muss im dazugehörigen COSObjekt der Dictionary geprüft werden: > > … > if (entry.getKey().equals(COSName.NAMES)) { > COSObject value = > (COSObject)entry.getValue(); > boolean hasJs = > value.getDictionaryObject(COSName.JAVA_SCRIPT) != null; > > … > > Bitte bei Euch einbauen, damit andere davon profitieren können. > > Viele Grüsse, > Oleg > > >> On 09 Aug 2016, at 16:22, Oleg Krechowezki <[email protected]> wrote: >> >> Hallo Andreas, >> >> ich habe einen weiteren Bug in preflight V1.8.12 entdeckt. >> >> JavaScript wird im PDF nicht entdeckt - siehe Anhang. >> >> PDType0Font hat ebenfalls einen NPE Bug - in getFontWidth(). >> >> Viele Grüsse, >> Oleg >> >>> On 03 Oct 2013, at 14:57, Andreas Lehmkuehler <[email protected]> wrote: >>> >>> Hallo Oleg, >>> >>> ich habe deinen Fix in den aktuellen Trunk eingearbeitet, siehe [1]. >>> >>> Nochmals danke für deine Hilfe. >>> >>> Viele Grüße aus Essen, >>> Andreas >>> >>> [1] https://issues.apache.org/jira/browse/PDFBOX-1737 >>> Am 24.09.2013 23:50, schrieb Oleg Krechowezki: >>>> Hallo Andreas, >>>> >>>> hier ein Test-Dokument. >>>> >>>> Bitte vertraulich behandeln. >>>> >>>> >>>> >>>> >>>> >>>> Danke und Gruss, >>>> Oleg >>>> >>>> On Sep 24, 2013, at 10:52 PM, Andreas Lehmkuehler <[email protected]> wrote: >>>> >>>>> Hallo Oleg, >>>>> >>>>> >>>>> Am 24.09.2013 22:47, schrieb Oleg Krechowezki: >>>>>> Hallo Andreas, >>>>>> >>>>>> ich verwende seit kurzem die PDF-Box lib. >>>>>> Bei bestimmten Dokumenten, die von Büro-Scannern erzeugt werden, kam es >>>>>> zu Parsing Exception: >>>>>> >>>>>> .. >>>>>> Caused by: java.io.IOException: Error: Expected a long type, >>>>>> actual='xref' >>>>>> at org.apache.pdfbox.pdfparser.BaseParser.readLong(BaseParser.java:1668) >>>>>> at >>>>>> org.apache.pdfbox.pdfparser.BaseParser.readObjectNumber(BaseParser.java:1598) >>>>>> at >>>>>> org.apache.pdfbox.pdfparser.NonSequentialPDFParser.parseXrefObjStream(NonSequentialPDFParser.java:458) >>>>>> >>>>>> Nach einer genauer Analyse zeigte sich, dass die Dokumente einen >>>>>> falschen Offset für den Start der xref Tabelle zeigen - statt auf den >>>>>> "x" zeigte der Offset auf Zeilenumbruch - erst dann folgte "x" bzw >>>>>> "xref". Deshalb scheiterte der in der else Condition aufgerufene " prev >>>>>> = parseXrefObjStream(prev);". >>>>>> >>>>>> Der Issue ist leicht lösbar: >>>>>> In NonSequentialPDFParser.java, Zeile 339, muss "skipSpaces();" vor "if >>>>>> (pdfSource.peek() == 'x')" vorangestellt werden. >>>>>> >>>>>> Viele Grüsse, >>>>>> Oleg >>>>> Eigentlich wickeln wir alle Fehlermeldung über unsere Mailinglisten [1] >>>>> bzw. >>>>> JIRA [2] ab, aber das kann ich ausnahmsweise später noch nachtragen. >>>>> Kannst du >>>>> mir vielleicht ein Test-PDF zur Verfügung stellen, damit ich den Fehler >>>>> nachvollziehen kann? Bei Bedarf kann ich das auch unter Verschluss halten. >>>>> >>>>> Auf jeden Fall schon einmal vielen Dank für deine Mithilfe. Vielleicht >>>>> bleibst >>>>> du ja am Ball, wir können immer zusätzliche Mitstreiter gebrauchen >>>>> >>>>> BR >>>>> Andreas >>>>> >>>>> [1] http://pdfbox.apache.org/mailinglists.html >>>>> [2] https://issues.apache.org/jira/browse/PDFBOX >>>>> >>>>> >>>> >>> >> <ppjslc_commonex_js.pdf> >
signature.asc
Description: Message signed with OpenPGP using GPGMail
