Welches Tool empfehlen Sie zum Überprüfen von PDF-Dateien?
Anwendungsfall: Ich versuche, PDF-Dateien programmgesteuert zu generieren (mit iText). Ich habe Probleme beim Erreichen bestimmter Layouts, aber ich habe PDF-Dateien mit Text, der so angelegt ist, wie ich es möchte (generiert aus Word). Ich würde gerne rückentwickeln, wie sie es machen.
PDF Inspector scheint gut zu sein, aber ich suche etwas für Windows.
no main manifest attribute, in PDF Document Inspector.jar
Antworten:
Adobe Acrobat verfügt über einen sehr coolen, aber gut versteckten Modus, mit dem Sie PDF-Dateien überprüfen können. Ich habe einen Blog-Artikel geschrieben, der dies unter https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/ erklärt.
quelle
Neben den in den anderen Antworten erwähnten GUI-basierten Tools gibt es einige Befehlszeilen-Tools, mit denen der ursprüngliche PDF-Quellcode in eine andere Darstellung umgewandelt werden kann, mit der Sie die (jetzt geänderte Datei) mit einem Texteditor überprüfen können. Alle folgenden Tools funktionieren unter Linux, Mac OS X, anderen Unix-Systemen oder Windows.
qpdf
(mein Favorit)Verwenden Sie qpdf, um die Streams (der meisten)
ObjStm
Objekte zu dekomprimieren und Objekte in einzelne indirekte Objekte zu zerlegen :qpdf
beschreibt sich selbst als ein Tool, das "strukturelle, inhaltserhaltende Transformationen für PDF-Dateien" durchführt .Öffnen und überprüfen Sie dann einfach die
uncompressed-qpdf.pdf
Datei in Ihrem bevorzugten Texteditor. Die meisten der zuvor komprimierten (und damit binären) Bytes sind jetzt Klartext.mutool
Es gibt auch das
mutool
Befehlszeilentool, das im Lieferumfang des MuPDF PDF-Viewers enthalten ist (ein Schwesterprodukt von Ghostscript, das von derselben Firma, Artifex, hergestellt wird ). Der folgende Befehl dekomprimiert auch Streams und erleichtert die Überprüfung über einen Texteditor:podofouncompress
PoDoFo ist eine FreeSoftware / OpenSource-Bibliothek für die Arbeit mit dem PDF-Format und enthält einige Befehlszeilentools, darunter
podofouncompress
. Verwenden Sie es so, um PDF-Streams zu dekomprimieren:peepdf.py
PeePDF ist ein Python-basiertes Tool, mit dem Sie PDF-Dateien durchsuchen können. Sein ursprünglicher Zweck war die Erforschung und Analyse von PDF-basierter Malware, aber ich finde es nützlich, auch die Struktur vollständig harmloser PDF-Dateien zu untersuchen.
Es kann interaktiv verwendet werden, um die in einer PDF-Datei enthaltenen Objekte und Streams zu "durchsuchen".
Ich werde hier kein Anwendungsbeispiel geben, sondern nur einen Link zu seiner Dokumentation:
pdfid.py
undpdf-parser.py
pdfid.py
undpdf-parser.py
sind zwei PDF-Tools von Didier Stevens, die in Python geschrieben wurden.Ihr Hintergrund besteht auch darin, schädliche PDF-Dateien zu untersuchen. Ich finde es jedoch auch nützlich, die Struktur und den Inhalt harmloser PDF-Dateien zu analysieren.
Hier ist ein Beispiel, wie ich den unkomprimierten Stream des PDF-Objekts Nr. 1 extrahieren würde. 5 in eine * .dump-Datei:
Schlussbemerkungen
Bitte beachten Sie, dass einige Binärteile in einer PDF-Datei nicht unbedingt unkomprimierbar (oder in lesbaren ASCII-Code dekodierbar) sind, da sie in PDFs in ihrem nativen Format eingebettet und verwendet werden. Solche PDF-Teile sind JPEG-Bilder, Schriftarten oder ICC-Farbprofile.
Wenn Sie die obigen Tools mit den angegebenen Befehlszeilenbeispielen vergleichen, werden Sie feststellen, dass sie NICHT alle identische Ausgaben erzeugen. Der Aufwand, sie auf ihre Unterschiede zu vergleichen, kann Ihnen helfen, die Art der PDF-Syntax und des Dateiformats besser zu verstehen.
quelle
Ich verwende iText RUPS (Lesen und Aktualisieren der PDF-Syntax) unter Linux. Da es in Java geschrieben ist, funktioniert es auch unter Windows. Sie können alle Objekte in einer PDF-Datei in einer Baumstruktur durchsuchen. Es kann auch Flate-codierte Streams im laufenden Betrieb decodieren, um die Inspektion zu vereinfachen.
Hier ist ein Screenshot:
quelle
java -jar itext-rups-5.5.6.jar
->Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/itextpdf/text/Version
- Wie soll man das Ding laufen lassen? Edit: Hab es herausgefunden. Sie sollten die von SourceForge angebotene Standarddatei nicht herunterladen. Sie müssen die JAR-Datei herunterladen, die Abhängigkeiten enthält.PDFXplorer von O2 Solutions leistet hervorragende Arbeit bei der Anzeige der Interna.
http://www.o2sol.com/pdfxplorer/overview.htm
(Kostenloses, ablenkendes Banner unten).
quelle
Ich habe PDFBox mit gutem Erfolg verwendet. Hier ist ein Beispiel dafür, wie der Code aussieht (zurück aus Version 0.7.2), der wahrscheinlich aus einem der bereitgestellten Beispiele stammt:
quelle
Die Objektanzeige in Acrobat ist gut, aber der PDF Canopener von Windjack Solution ermöglicht eine bessere Überprüfung mit einer Pipette zur Auswahl von Objekten auf der Seite. Ermöglicht auch Änderungen an PDF.
http://www.windjack.com/products/pdfcanopener.html
quelle
Es gibt auch eine andere Option. Adobe Acrobat Pro kann auch die interne Baumstruktur der PDF-Datei anzeigen.
Darüber hinaus kann Adobe Acrobat Pro auch die interne Struktur der Dokumentschriftarten im PDF anzeigen. Die meisten anderen "PDF Tree Structure Viewer" haben diese Option nicht
quelle
Wenn Sie programmgesteuert in Python arbeiten möchten, ist pdfminer eine gute Option. Sie können mit der PDF-Struktur im Speicher als Objekthierarchie arbeiten oder sie als XML serialisieren.
quelle
PDF Analyzer ähnelt PDFXplorer , bietet jedoch mehr Optionen. Es ist auch nach einer einzigen Registrierung kostenlos.
quelle
Mein Vorschlag ist Foxit PDF Reader, der sehr hilfreich ist, um wichtige Textbearbeitungsarbeiten an PDF-Dateien durchzuführen .
quelle