PDFsharp & MigraDoc Foundation
http://forum.pdfsharp.com/

PdfReaderException: Token '' was not expected.
http://forum.pdfsharp.com/viewtopic.php?f=3&t=1232
Page 1 of 1

Author:  aadler [ Thu Jun 24, 2010 10:39 am ]
Post subject:  PdfReaderException: Token '' was not expected.

Hallo,

ich hoffe ich kann hier auch auf Deutsch schreiben, will mir jetzt keinen mit Englisch abbrechen... :)

Ich verwende die PDFsharp-Windows-Forms-DLL in einem unserer Programme und von einem Kunden habe ich oben genannte Fehlermeldung gemeldet bekommen, die bei allen seinen PDF-Dateien auftritt, die er mit unserer Software benutzen möchte. Die PDF-Datei selber kommt aus einem Programm das offensichtlich die PDFs mit iTextSharp erzeugt (so jedenfalls laut Dokumenteigenschaften). In der PDF-Datei liegt nur ein einziges Bild drin, kein Text.

Ich könnte auch eine entsprechende PDF-Datei zu Testzwecken zur Verfügung stellen, will das aber nicht hier öffentlich machen, weil es sich hier um eine Kundendatei mit vertrauenswürdigen Informationen handelt. Kann ich die Datei vielleicht per E-Mail zuschicken?

Ich weiß zwar, dass ich das Problem offensichtlich umgehen könnte, wenn ich iTextSharp statt PDFsharp benutzen würde, das wollte ich allerdings wenn es geht vermeiden, da mir die PDFsharp-Komponente sehr gut gefällt, vor allem wegen der sauberen API!

Grüße,
Andreas Adler

Author:  Thomas Hoevel [ Thu Jun 24, 2010 1:57 pm ]
Post subject:  Re: PdfReaderException: Token '' was not expected.

English:
I checked the test file you sent.
File size is 108 kiB, the real PDF file is 55 kiB - and it's padded with 50,000+ zero bytes at the end.
Without these zero bytes it works fine.

A patch for PDFsharp that will ignore those superfluous zero bytes is described here:
viewtopic.php?f=3&t=273&p=583&hilit=startxref#p583

German:
Ich habe Ihre Beispieldatei geprüft: sie enthält am Ende der Datei über 50.000 überflüssige Nullbytes.
Nach Entfernen dieser Nullbytes (Dateigröße verringerte sich von 108 kiB auf 55 kiB) kann sie mit PDFsharp verarbeitet werden.

Falls Sie iTextSharp dazu bringen können, diese Füllbytes wegzulassen, wäre das die Lösung.

Sie können auch PDFsharp so abändern, dass diese Füllbytes ignoriert werden:
viewtopic.php?f=3&t=273&p=583&hilit=startxref#p583

Author:  aadler [ Thu Jun 24, 2010 2:19 pm ]
Post subject:  Re: PdfReaderException: Token '' was not expected.

Danke für die Antwort und den Lösungsvorschlag!

Da die PDF-Dateien die verarbeitet werden sollen aus einem Fremdsystem kommen habe ich hier leider keine Kontrolle über den Aufbau der PDF-Datei. (Wobei sich mir der Sinn dieser Füllbytes gar nicht erschließt. Klar schießen die 50 KB den Vogel nicht ab, aber einfach so Ressourcen aus dem Fenster schleudern...)

Ich werde dann wohl die vorgeschlagene Änderung in der Bibliothek vornehmen. Da ich auf meiner Arbeit leider nur VB.NET zur Verfügung hab werde ich dann erst morgen den hoffentlich positiven Bescheid geben. :)

Nochmals vielen Dank für Ihre Hilfe!

Liebe Grüße,
Andreas Adler

Author:  aadler [ Fri Jun 25, 2010 7:14 am ]
Post subject:  Re: PdfReaderException: Token '' was not expected.

Habe nun den vorgeschlagenen Patch durchgeführt und eine eigene PdfSharp-Assembly kompiliert. Nun funktioniert es auch mit der besagten PDF-Datei, danke! :)

Eine kleine Frage hätte ich allerdings noch: Hat die Code-Änderung vielleicht irgendwelche negativen Seiteneffekte zur Folge? Denn immerhin ist die Lösung zu diesem Problem schon fast drei Jahre bekannt, ist aber nicht in die offizielle Version eingeflossen. Das hat ja sicher seine Gründe? Nicht, dass ich dadurch jetzt mehr kaputt mache als dass ich repariere. ;)

Grüße,
Andreas Adler

Author:  Thomas Hoevel [ Mon Jun 28, 2010 7:53 am ]
Post subject:  Re: PdfReaderException: Token '' was not expected.

aadler wrote:
Denn immerhin ist die Lösung zu diesem Problem schon fast drei Jahre bekannt, ist aber nicht in die offizielle Version eingeflossen.

Das "Problem" ist, dass bestimmte Programme hinter dem "%%EOF" (End Of File) noch größere Datenmengen bringen (im konkreten Fall über 50.000 sinnlose Nullbytes, die vermutlich auf einen Programmierfehler zurückzuführen sind (Puffergröße vor dem Speichern nicht angepasst)).
Die "Lösung" ist ein Workaround für einen Programmierfehler in anderen Anwendungen.

Solange nur Nullbytes angehängt werden, wird diese Lösung sicher funktionieren.

Das Problem ist in drei Jahren dreimal aufgetreten. An den Fall, dass hinter %%EOF kurze Kommentare folgen, haben wir PDFsharp angepasst.
Ich werde dieses "Problem" noch mal mit unserem Teamleiter besprechen.

Author:  aadler [ Mon Jun 28, 2010 9:39 am ]
Post subject:  Re: PdfReaderException: Token '' was not expected.

Thomas Hoevel wrote:
im konkreten Fall über 50.000 sinnlose Nullbytes, die vermutlich auf einen Programmierfehler zurückzuführen sind (Puffergröße vor dem Speichern nicht angepasst)

Eventuell habe ich vielleicht doch einen indirekten Einfluss auf die Erzeugung der PDF-Dateien, vielleicht bekomme ich es also so hin, dass ich direkt korrekte PDFs erhalte, dann kann ich ja wieder die originale PdfSharp-Assembly benutzen. Das wäre mir in jedem Fall lieber, so bekomme ich neue Programmversionen unkomplizierter.

Thomas Hoevel wrote:
An den Fall, dass hinter %%EOF kurze Kommentare folgen, haben wir PDFsharp angepasst.

Heißt das dann für mich, da ich derzeit die Version mit dem Workaround benutze, um den Fehler zu beheben, dass ich PDFs, die nach dem %%EOF noch Kommentare haben,
  1. gar nicht mehr verwenden kann oder
  2. zwar noch verwenden kann, die kommentare aber nicht auswerten kann (benötige ich eh nicht)?

Vielen Dank schonmal für Ihre Bemühungen!

Viele Grüße,
Andreas Adler

Author:  Thomas Hoevel [ Mon Jun 28, 2010 11:57 am ]
Post subject:  Re: PdfReaderException: Token '' was not expected.

Adobe dokumentiert nicht, wie der Reader nach %%EOF sucht.

Vermutlich entspricht der Workaround dem, was auch der Reader macht. Probleme dürfte es damit keine geben.

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/