Am 10.08.2016 um 15:51 schrieb Oleg Krechowezki:
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:

It's not clear what's the problem, and what's the solution. Javascript names are already forbidden to contain javascript since PDFBOX-1754, although it was only fixed in 2.0.

You also mention "PDType0Font hat ebenfalls einen NPE Bug - in getFontWidth()" but this method doesn't exist.

Tilman


…
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>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to