2010-09-02 5 views
13

Meine Gruppe hat die Bibliothek itext-sharp und C# /. NET verwendet, um benutzerdefinierte dynamische PDFs zu erstellen. Dieser Prozess funktioniert größtenteils gut für unsere Bedürfnisse. Das einzige Problem, auf das wir bei der Entwicklung/dem Testen stoßen können, sind Layoutprobleme, die dazu führen können, dass das PDF in Adobe Reader, insbesondere in Adobe Reader, nicht korrekt geöffnet/gerendert wird. die neueren Versionen von Acrobat/Reader.Wie können Sie ein Problem mit einem programmatisch generierten PDF finden?

Das Dokument wird die Anzeige für die ersten X-Seiten korrekt öffnen. Wenn jedoch ein Fehler auftritt, werden die verbleibenden Seiten im Dokument nicht angezeigt.

Wie bereits erwähnt, sind wir in der Regel in der Lage, dieses Problem mit unserem C#/iText-Code auf ein Layout-Problem zurückzuführen. Wir finden schließlich den Fehler, indem wir die Rate- und Prüfmethode verwenden oder teilen und erobern. Es funktioniert, aber es ist nicht der beste Weg, um diese Probleme zu lösen.

Ich habe mich gefragt, ob es Tools gibt, die den Prozess der Validierung eines PDF-Dokuments beschleunigen könnten und dabei helfen könnten, auf Fehler im Dokument hinzuweisen?

Antwort

13

Das Validieren von PDF-Dateien kann eine ziemlich knifflige Aufgabe sein - vor allem, weil die dafür erforderlichen Werkzeuge sehr teuer sind.

Acrobat verfügt über ein Tool (Erweitert> Preflight> PDF-Analyse> PDF-Syntaxprobleme melden), mit dem Sie eine PDF-Datei auf Syntaxprobleme scannen können. Auf dieses Werkzeug kann jedoch nicht programmgesteuert zugegriffen werden.

Appligent hat ein Tool namens pdfHarmmony, das von Adobe PDF-Bibliothek betrieben wird, und kann programmgesteuert zugegriffen werden, aber es ist sehr teuer (US $ 2500 +). Diese Option würde Ihnen die besten Ergebnisse liefern, wenn Sie es sich leisten können.

Es gibt eine andere Option, die 3-Heights PDF Analysis & Repair ist, ich weiß nicht, wie es Qualität ist, aber es ist ähnlich teuer.

Diese PDF Validator tool auf SourceForge könnte Sie interessieren, aber es analysiert nur die Struktur der Dokumente und nicht den Inhalt selbst, so dass beschädigte Bilder oder Content-Streams nicht aufgenommen werden.

Leider gibt es aufgrund der Schwierigkeit, PDF-Dateien im Detail zu analysieren, nicht wirklich freie Werkzeuge, die es richtig machen, aber ich nehme an, ein Werkzeug, das die Dokumentenstruktur überprüft, ist besser als nichts.

17

Der "billigste" (und gleichzeitig recht zuverlässige!) Weg ist Ghostscript zu verwenden. Lassen Sie Ghostscript das PDF interpretieren und sehen Sie, welchen Rückgabewert es gibt. Wenn es kein Problem gibt, sollte die PDF-Datei in Ordnung sein. Unter Windows:

gswin32c.exe^
     -o nul 
     -sDEVICE=nullpage^
     d:/path/to/file.pdf 

Das nullpage Ausgabegerät wird keine neue Datei erstellen. Aber Ghostscript wird auf stdout/stderr informieren, wenn es einen Fehler findet. Überprüfen Sie den Inhalt der Pseudo-Umgebungsvariablen %errorlevel%. - Unter Linux:

gs \ 
     -o /dev/null \ 
     -sDEVICE=nullpage \ 
     /path/to/file.pdf 

(. Überprüfen Rückgabewert mit echo $? für einen 0 Wert für „keine Probleme“)

Bei Fehlern, gibt Ghost einige Informationen, die Ihnen nützlich sein können. In jedem Fall, zumindest können Sie die Dateien, die NO Probleme haben, positiv identifizieren: Wenn Ghostscript sie verarbeiten kann, wird Acrobat (Reader) kein Problem haben, sie auch zu rendern.

+0

Sehr hilfreich, danke! Eine Anmerkung jedoch: auf ghostscript v9.18 auf Darwin (OS X), dieser Befehl immer noch '0' bei Parsing-Fehler, aber nur für einige PDFs, so verlassen mich jetzt sowohl Exit-Code und stderr-Ausgabe, um zu sagen, ob es fehlgeschlagen ist zu analysieren. – piersadrian