it-swarm.com.de

Bestes Werkzeug für die Inspektion PDF Dateien?

Welches Tool empfehlen Sie zum Überprüfen von PDF -Dateien?

Anwendungsfall: Ich versuche, programmgesteuert PDF -Dateien zu generieren (mit iText). Ich habe Schwierigkeiten, bestimmte Layouts zu erstellen, aber ich habe PDF -Dateien mit Text so angelegt, wie ich möchte (erzeugt aus Word). Ich würde gerne nachvollziehen, wie sie das machen.

PDF Inspector scheint gut zu sein, aber ich suche etwas für Windows.

61
bmm6o

Adobe Acrobat verfügt über einen sehr coolen, aber gut versteckten Modus, in dem Sie PDF -Dateien prüfen können. Ich habe einen Blogartikel unter https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/ geschrieben.

15
mark stephens

Neben den GUI-basierten Tools, die in den anderen Antworten erwähnt wurden, gibt es einige Befehlszeilen-Tools, die den ursprünglichen PDF -Quellcode in eine andere Darstellung umwandeln können, mit der Sie die (jetzt modifizierte Datei) mit einem Texteditor überprüfen können. Alle unten aufgeführten Tools funktionieren auf Linux, Mac OS X, anderen Unix-Systemen oder Windows.

qpdf (mein Favorit)

Verwenden Sie qpdf, um die Streams der (meisten) Objekte zu dekomprimieren und ObjStm-Objekte in einzelne indirekte Objekte zu zerlegen:

qpdf --qdf --object-streams=disable orig.pdf uncompressed-qpdf.pdf

qpdf beschreibt sich selbst als Werkzeug, das "Strukturelle, inhaltserhaltende Umwandlungen in PDF -Dateien" ausführt.

Öffnen Sie dann einfach die uncompressed-qpdf.pdf-Datei in Ihrem bevorzugten Texteditor. Die meisten der zuvor komprimierten (und damit auch binären) Bytes werden jetzt als Klartext angezeigt.

mutool

Es gibt auch das Befehlszeilentool mutool, das zusammen mit dem Viewer MuPDF PDF (einem Schwesterprodukt von Ghostscript, das von derselben Firma hergestellt wird, Artifex ) geliefert wird. Mit dem folgenden Befehl werden auch Streams dekomprimiert, sodass sie einfacher durch einen Texteditor geprüft werden können:

mutool clean -d orig.pdf uncompressed-mutool.pdf

podofouncompress

PoDoFo ist eine FreeSoftware/OpenSource-Bibliothek, die mit dem Format PDF arbeitet, und enthält einige Befehlszeilen-Tools, darunter podofouncompress. Verwenden Sie es wie folgt, um PDF - Streams zu dekomprimieren:

podofouncompress orig.pdf uncompressed-podofo.pdf

peepdf.py

PeePDF ist ein auf Python basierendes Werkzeug, mit dem Sie PDF -Dateien durchsuchen können. Sein ursprünglicher Zweck war die Erforschung und Dissektion von PDF-basierter Malware, aber ich finde es auch nützlich, die Struktur völlig harmloser PDF -Dateien zu untersuchen. 

Es kann interaktiv verwendet werden, um die in einer PDF enthaltenen Objekte und Streams zu "durchsuchen".

Ich werde hier kein Anwendungsbeispiel geben, sondern nur einen Link zur Dokumentation:

pdfid.py und pdf-parser.py

pdfid.py und pdf-parser.py sind zwei PDF - Werkzeuge von Didier Stevens, die in Python geschrieben wurden.

Ihr Hintergrund soll auch helfen, bösartige PDFs zu untersuchen - aber ich finde es auch nützlich, die Struktur und den Inhalt gutartiger PDF -Dateien zu analysieren.

Hier ein Beispiel, wie ich den unkomprimierten Stream von PDF Objektnr. Extrahieren würde. 5 in eine * .dump-Datei:

pdf-parser.py -o 5 -f -d obj5.dump my.pdf

Abschließende Notizen

  1. Bitte beachten Sie, dass einige binäre Teile in einem PDF nicht unbedingt unkomprimierbar (oder in vom Menschen lesbaren ASCII - Code dekodierbar) sind, da sie in ihrem nativen Format in PDF-Dateien eingebettet und verwendet werden. Solche PDF -Teile sind JPEG-Bilder, Schriftarten oder ICC-Farbprofile.

  2. Wenn Sie die oben genannten Tools und die angegebenen Befehlszeilenbeispiele vergleichen, werden Sie feststellen, dass NICHT alle identische Ausgaben erzeugen. Wenn Sie sie auf ihre Unterschiede hin vergleichen, können Sie die Natur der PDF -Syntax und des Dateiformats besser verstehen.

52
Kurt Pfeifle

Ich verwende iText RUPS (Lesen und Aktualisieren von PDF - Syntax) in Linux. Da es in Java geschrieben ist, funktioniert es auch unter Windows. Sie können alle Objekte in der Datei PDF in einer Baumstruktur durchsuchen. Flate-kodierte Streams können auch im laufenden Betrieb dekodiert werden, um das Prüfen zu erleichtern.

Hier ist ein Screenshot:

iText RUPS screenshot

31
gkcn

Ich habe PDFBox mit gutem Erfolg benutzt. Hier ein Beispiel, wie der Code aussieht (zurück von Version 0.7.2), der wahrscheinlich aus einem der bereitgestellten Beispiele stammt:

// load the document
System.out.println("Reading document: " + filename);
PDDocument doc = null;                                                                                                                                                                                                          
doc = PDDocument.load(filename);

// look at all the document information
PDDocumentInformation info = doc.getDocumentInformation();
COSDictionary dict = info.getDictionary();
List l = dict.keyList();
for (Object o : l) {
    //System.out.println(o.toString() + " " + dict.getString(o));
    System.out.println(o.toString());
}

// look at the document catalog
PDDocumentCatalog cat = doc.getDocumentCatalog();
System.out.println("Catalog:" + cat);

List<PDPage> lp = cat.getAllPages();
System.out.println("# Pages: " + lp.size());
PDPage page = lp.get(4);
System.out.println("Page: " + page);
System.out.println("\tCropBox: " + page.getCropBox());
System.out.println("\tMediaBox: " + page.getMediaBox());
System.out.println("\tResources: " + page.getResources());
System.out.println("\tRotation: " + page.getRotation());
System.out.println("\tArtBox: " + page.getArtBox());
System.out.println("\tBleedBox: " + page.getBleedBox());
System.out.println("\tContents: " + page.getContents());
System.out.println("\tTrimBox: " + page.getTrimBox());
List<PDAnnotation> la = page.getAnnotations();
System.out.println("\t# Annotations: " + la.size());
5
Kaleb Pederson

Der Objektbetrachter in Acrobat ist gut, aber der Canopener PDF von Windjack Solution ermöglicht eine bessere Inspektion mit einer Pipette zum Auswählen von Objekten auf der Seite. Erlaubt auch Änderungen an PDF.

http://www.windjack.com/products/pdfcanopener.html

3
Dwight Kelly

Es gibt auch eine andere Option. Adobe Acrobat Pro kann auch die interne Baumstruktur der PDF-Datei anzeigen. 

  1. Öffnen Sie das Preflight 
  2. Gehe zu Optionen (rechte obere Ecke)
  3. Interne PDF Struktur

Darüber hinaus kann Adobe Acrobat Pro auch die interne Struktur der Dokumentschriftarten in PDF anzeigen. Die meisten anderen "PDF-Strukturansicht-Viewer" verfügen nicht über diese Option

 enter image description here

2
Vadimo

PDFXplorer von O2 Solutions kann die Interna hervorragend darstellen.

http://www.o2sol.com/pdfxplorer/overview.htm

(Freies, ablenkendes Banner unten).

2
Pierre

Wenn Sie programmgesteuert von Python aus 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.

0
W.P. McNeill

PDF Analyzer ähnelt PDFXplorer , bietet jedoch mehr Optionen. Es ist auch nach einer einmaligen Registrierung kostenlos.

 enter image description here 

0
juFo