Quel outil recommandez-vous pour inspecter les 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 mises en page, mais j'ai des fichiers PDF avec du texte disposé comme je le souhaite (généré à partir de Word). Je voudrais faire de l'ingénierie inverse sur la façon dont ils le font.
PDF Inspector semble être bon, mais je cherche quelque chose pour Windows.
no main manifest attribute, in PDF Document Inspector.jar
Réponses:
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 expliquant cela à https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/
la source
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 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 sur Linux, Mac OS X, d'autres systèmes Unix ou Windows.
qpdf
(mon préféré)Utilisez qpdf pour décompresser (la plupart) les flux d'
ObjStm
objets et disséquer également les objets en objets indirects individuels:qpdf
se décrit comme un outil qui effectue des "transformations structurelles, préservant le contenu des fichiers PDF" .Ensuite, ouvrez simplement + inspectez le
uncompressed-qpdf.pdf
fichier dans votre éditeur de texte préféré. La plupart des octets précédemment compressés (et donc binaires) seront désormais du texte brut.mutool
Il existe également l'
mutool
outil de ligne de commande fourni avec la visionneuse PDF MuPDF (qui est un produit frère de 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:podofouncompress
PoDoFo est une bibliothèque FreeSoftware / OpenSource pour travailler avec le format PDF et elle comprend quelques outils de ligne de commande, y compris
podofouncompress
. Utilisez-le comme ceci pour décompresser les flux PDF:peepdf.py
PeePDF est un outil basé sur Python qui vous aide à explorer les fichiers PDF. Son objectif initial était la recherche et la dissection de logiciels malveillants basés sur PDF, mais je trouve également utile d'étudier la structure de fichiers PDF complètement inoffensifs.
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
etpdf-parser.py
pdfid.py
etpdf-parser.py
sont deux outils PDF de Didier Stevens écrits en Python.Leur expérience est également d'aider à explorer les fichiers PDF malveillants - 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 dans un fichier * .dump:
Notes finales
Veuillez noter que certaines parties binaires d'un PDF ne sont pas nécessairement incompressibles (ou décodables en code ASCII lisible par l'homme), car elles sont incorporées et utilisées dans leur format natif dans les PDF. Ces parties PDF sont des images JPEG, des polices ou des profils de couleurs ICC.
Si vous comparez les outils ci-dessus et les exemples de ligne de commande donnés, vous découvrirez qu'ils ne produisent PAS tous des sorties identiques. L'effort de les comparer pour leurs différences en soi peut vous aider à mieux comprendre la nature de la syntaxe et du format de fichier PDF.
la source
J'utilise iText RUPS (Reading and PDF Syntax) sous Linux. Comme il est écrit en Java, il fonctionne également sous Windows. Vous pouvez parcourir tous les objets du fichier PDF dans une arborescence. Il peut également décoder à la volée les flux encodés Flate pour faciliter l'inspection.
Voici une capture d'écran:
la source
java -jar itext-rups-5.5.6.jar
->Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/itextpdf/text/Version
- Comment êtes-vous censé gérer cette chose? Edit: compris. Vous ne devez pas télécharger le fichier par défaut proposé par SourceForge, vous devez télécharger le .jar qui inclut les dépendances.PDFXplorer d'O2 Solutions fait un travail remarquable pour afficher les éléments internes.
http://www.o2sol.com/pdfxplorer/overview.htm
(Bannière gratuite et distrayante en bas).
la source
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:
la source
La visionneuse d'objets dans Acrobat est bonne, mais PDF Canopener 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
la source
Il existe également une autre option. Adobe Acrobat Pro est également capable d'afficher l'arborescence interne du PDF.
En plus, Adobe Acrobat Pro peut également afficher la structure interne des polices de document dans le PDF, la plupart des autres "visionneuses d'arborescence PDF" n'ont pas cette otion
la source
Si vous souhaitez travailler par programmation à partir de Python, pdfminer est une bonne option. Il vous permet de travailler avec la structure PDF en mémoire en tant que hiérarchie d'objets ou de la sérialiser en XML.
la source
PDF Analyzer est similaire à PDFXplorer , mais il a plus d'options. Il est également gratuit après une seule inscription.
la source
Ma suggestion est Foxit PDF Reader, qui est très utile pour effectuer d'importants travaux d'édition de texte sur un fichier pdf.
la source