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Œð™"ßçÈœl­aŽ.ð†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 doesnt
>               // 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>
> 

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to