Meilleur outil pour inspecter les fichiers PDF?


Quel outil recommandez-vous pour inspecter les fichiers PDF?

Cas d'utilisation: J'essaie de générer par programme des fichiers PDF (en utilisant iText). J'ai du mal à réaliser certaines mises en page, mais j'ai des fichiers PDF avec du texte présenté comme je le veux (généré à partir de Word). Je voudrais faire de l'ingénierie inverse comment ils le font.

PDF Inspector semble être bon, mais je cherche quelque chose pour Windows.

 49
Author: gkcn, 2010-08-23

8 answers

Adobe Acrobat a un mode très cool mais plutôt bien caché vous permettant d'inspecter les fichiers PDF. J'ai écrit un article de blog l'expliquant à https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/

 13
Author: mark stephens, 2016-08-31 19:12:42

Outre les outils basés sur l'interface graphique mentionnés dans les autres réponses, il existe quelques outils de ligne de commande qui peuvent transformer le code source PDF original en une représentation différente qui vous permet d'inspecter le fichier (maintenant modifié) avec un éditeur de texte. Tous les outils ci-dessous fonctionnent sur Linux, Mac OS X, d'autres systèmes Unix ou Windows.

qpdf (mon préféré)

Utilisation qpdf décompresser (la plupart) les flux d'objets et disséquer les objets ObjStm en objets individuels objets indirects:

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

qpdf se décrit comme un outil qui effectue "des transformations structurelles préservant le contenu sur les fichiers PDF".

Ensuite, ouvrez + inspectez le fichier uncompressed-mutool.pdf dans votre éditeur de texte préféré. La plupart des octets précédemment compressés (et donc binaires) seront désormais en texte brut.

mutool

Il y a aussi l'outil de ligne de commande mutool qui est livré avec le MuPDF PDF viewer (qui est un produit frère à Ghostscript, fabriqué par la même société, Artifex ). La commande suivante décompresse également les flux et les rend plus faciles à inspecter via un éditeur de texte:

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

podofouncompress

PoDoFo est une bibliothèque FreeSoftware/OpenSource pour travailler avec le format PDF et il comprend quelques outils de ligne de commande, y compris podofouncompress. Utilisez-le comme ceci pour décompresser les flux PDF:

podofouncompress orig.pdf uncompressed-podofo.pdf

peepdf.py

PeePDF est un outil basé sur Python ce qui vous aide à explorer les fichiers PDF. Son but initial était la recherche et la dissection de logiciels malveillants basés sur PDF, mais je trouve utile aussi d'enquêter sur la structure des fichiers PDF complètement bénins.

Il peut être utilisé de manière interactive pour "parcourir" les objets et les flux contenus dans un PDF.

Je ne donnerai pas d'exemple d'utilisation ici, mais seulement un lien vers sa documentation:

pdfid.py et pdf-parser.py

pdfid.py et pdf-parser.py deux PDF tools par Didier Stevens écrit en Python.

Leur arrière-plan est également d'aider à explorer PDF malveillants but mais je trouve également utile d'analyser la structure et le contenu des fichiers PDF bénins.

Voici un exemple comment extraire le flux non compressé de l'objet PDF no. 5 en a *.fichier de vidage:

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

Notes finales

  1. Veuillez noter que certaines parties binaires à l'intérieur d'un PDF ne sont pas nécessairement non compressibles (ou décodables en code ASCII lisible par l'homme), car elles sont intégrées et utilisées dans leur format natif dans les PDF. Ces parties PDF sont des images JPEG, des polices ou des profils de couleur ICC.

  2. Si vous comparez les outils ci-dessus et les exemples de ligne de commande donnés, vous découvrirez qu'ils le font PAS tous produisent des sorties identiques. L'effort de les comparer pour leurs différences en soi peut vous aider à mieux comprendre la nature de la syntaxe PDF et le format de fichier.

 44
Author: Kurt Pfeifle, 2018-04-14 15:39:52

J'utilise iText RUPS (Lecture et mise à jour de la syntaxe PDF) sous Linux. Comme il est écrit en Java, il fonctionne aussi sur Windows. Vous pouvez parcourir tous les objets du fichier PDF dans une arborescence. Il peut également décoder les flux codés Flate à la volée pour faciliter l'inspection.

Voici une capture d'écran:

iText RUPTURES capture d'écran

 28
Author: gkcn, 2016-04-12 10:41:54

J'ai utilisé PDFBox, avec un bon succès. Voici un exemple de ce à quoi ressemble le code (de retour de la version 0.7.2), qui provient probablement de l'un des exemples fournis:

// 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());
 4
Author: Kaleb Pederson, 2010-08-23 16:53:02

La visionneuse d'objets dans Acrobat est bonne mais le Canopener PDF de Windjack Solution permet une meilleure inspection avec une pipette pour sélectionner les objets sur la page. Permet également d'apporter des modifications au PDF.

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

 3
Author: Dwight Kelly, 2010-08-24 19:11:02

PDFXplorer de O2 Solutions fait un travail remarquable d'affichage des internes.

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

(Bannière libre et distrayante en bas).

 1
Author: Pierre, 2017-12-17 13:33:36

Il y a aussi une autre option. Adobe Acrobat Pro est également capable d'afficher l'arborescence interne du PDF.

  1. Ouvrir le contrôle en amont
  2. Allez dans Options (coin supérieur droit)
  3. Structure PDF interne

En haut Adobe Acrobat Pro peut également afficher la structure interne des polices de document dans le PDF la plupart des autres "PDF tree structure viewer" n'ont pas cette otion

entrez la description de l'image ici

 0
Author: Vadimo, 2015-09-23 09:15:48

Mon sugession est Foxit PDF Reader ce qui est très utile pour effectuer un travail d'édition de texte important sur un fichier pdf.

 -3
Author: nifCody, 2016-03-11 00:05:48