Meilleur outil pour inspecter les fichiers PDF?

Quel outil recommandez-vous pour inspecter des fichiers PDF?

Cas d’utilisation: J’essaie de générer des fichiers PDF par programmation (en utilisant iText). J’ai du mal à réaliser certaines dispositions, mais j’ai des fichiers PDF avec du texte comme je le souhaite (générés à partir de Word). Je voudrais faire de l’ingénierie inverse.

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

Adobe Acrobat dispose d’un mode très cool mais plutôt bien caché qui vous permet d’inspecter des fichiers PDF. J’ai écrit un article de blog pour l’expliquer sur https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/

Outre les outils basés sur l’interface graphique mentionnés dans les autres réponses, il existe quelques outils en ligne de commande qui peuvent transformer le code source PDF d’origine 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 sous Linux, Mac OS X, d’autres systèmes Unix ou Windows.

qpdf (mon préféré)

Utilisez qpdf pour décompresser (le plus) les stream d’objects et disséquer les objects ObjStm objects indirects individuels:

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

qpdf décrit comme un outil qui effectue des “transformations structurelles préservant le contenu des fichiers PDF” .

Ensuite, ouvrez simplement + 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 binarys) seront désormais du texte brut.

mutool

Il y a aussi l’outil de ligne de commande mutool fourni avec le visualiseur PDF MuPDF (qui est un produit apparenté à Ghostscript, fabriqué par la même société, Artifex ). La commande suivante décompresse également les stream 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 comprend quelques outils en ligne de commande, y compris podofouncompress . Utilisez-le comme ça pour décompresser les stream PDF:

 podofouncompress orig.pdf uncompressed-podofo.pdf 

peepdf.py

PeePDF est un outil basé sur Python qui vous aide à explorer les fichiers PDF. Son objective initial était la recherche et la dissection de logiciels malveillants basés sur PDF, mais je trouve utile également d’étudier la structure de fichiers PDF complètement inoffensifs.

Il peut être utilisé de manière interactive pour “parcourir” les objects et les stream contenus dans un PDF.

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

  • peepdf – Outil d’parsing PDF

pdfid.py et pdf-parser.py

pdfid.py et pdf-parser.py sont deux outils PDF de Didier Stevens écrits en Python.

Leurs antécédents servent également à explorer les fichiers PDF malveillants – mais je trouve également utile d’parsingr la structure et le contenu des fichiers PDF bénins.

Voici un exemple pour extraire le stream non compressé de l’object PDF no. 5 dans un fichier * .dump:

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

Notes finales

  1. Veuillez noter que certaines parties binarys d’un fichier PDF ne sont pas nécessairement incompressibles (ou peuvent être décodées en code ASCII lisible par l’homme), car elles sont incorporées et utilisées dans leur format natif dans les fichiers PDF. Ces pièces PDF sont des images JPEG, des fonts ou des profils de couleur ICC.

  2. Si vous comparez les outils ci-dessus et les exemples de lignes de commande donnés, vous découvrirez qu’ils ne produisent PAS tous des sorties identiques. La comparaison des différences en elles-mêmes peut vous aider à mieux comprendre la nature de la syntaxe et du format de fichier PDF.

J’utilise iText RUPS (lecture et mise à jour de la syntaxe PDF) sous Linux. Comme il est écrit en Java, il fonctionne également sous Windows. Vous pouvez parcourir tous les objects d’un fichier PDF dans une arborescence. Il peut également décoder les stream encodés par Flate à la volée pour faciliter les inspections.

Voici une capture d’écran:

Capture d'écran de iText RUPS

J’ai utilisé PDFBox avec succès. Voici un exemple de ce que le code ressemble (retour de la version 0.7.2), qui vient 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.toSsortingng() + " " + dict.getSsortingng(o)); System.out.println(o.toSsortingng()); } // look at the document catalog PDDocumentCatalog cat = doc.getDocumentCatalog(); System.out.println("Catalog:" + cat); List 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 la = page.getAnnotations(); System.out.println("\t# Annotations: " + la.size()); 

Le visualiseur d’objects d’Acrobat est bon, mais PDF Canopener de Windjack Solution permet une meilleure inspection avec une pipette pour sélectionner des objects sur la page. Permet également de modifier le PDF.

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

PDFXplorer d’O2 Solutions fait un travail remarquable pour l’affichage des composants internes.

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

(Bannière gratuite et distrayante en bas).

Il y a aussi une autre option. Adobe Acrobat Pro peut également afficher l’arborescence interne du PDF.

  1. Contrôle en amont ouvert
  2. Aller aux options (coin supérieur droit)
  3. Structure PDF interne

En haut, Adobe Acrobat Pro peut également afficher la structure interne des fonts de documents dans le PDF, la plupart des autres “PDF Tree Viewer Viewer” n’ont pas cette otion

entrer la description de l'image ici

Ma suggestion est Foxit PDF Reader qui est très utile pour faire du travail important d’édition de texte sur un fichier pdf.