Structure d’un fichier PDF?

Pour un petit projet, je dois parsingr des fichiers PDF et en prendre une partie spécifique (une simple chaîne de caractères). Je voudrais utiliser python pour faire cela et j’ai trouvé plusieurs bibliothèques capables de faire ce que je veux à certains égards.

Mais maintenant, après quelques recherches, je me demande quelle est la véritable structure d’un fichier pdf, est-ce que quelqu’un sait s’il existe des spécifications ou des explications en ligne? J’ai trouvé un lien sur Adobe mais il semble que ce soit un lien mort 🙁

Voici un lien vers le matériel de référence d’Adobe

http://www.adobe.com/devnet/pdf/pdf_reference.html

Vous devez savoir que le PDF concerne uniquement la présentation, pas la structure. L’parsing ne sera pas facile.

Lorsque j’ai commencé à travailler avec PDF, j’ai trouvé la référence PDF très difficile à naviguer. Cela vous aidera peut-être de savoir que la syntaxe de la structure de fichier donne une vue d’ensemble de la structure du document, et que la structure de l’object et non la structure de fichier est ce que Adobe appelle la structure du document. Cela se trouve également dans la syntaxe. La description des opérateurs est masquée dans l’Annexe A – très utile pour comprendre ce qui se passe dans les stream de contenu. Si vous éprouvez de la difficulté à travailler avec des espaces de couleur, vous le trouverez caché dans Graphics! J’espère que ces pointeurs vous aideront à trouver les choses plus rapidement que moi.

Si vous utilisez Windows, pdftron CosEdit vous permet de parcourir la structure de l’object pour le comprendre. Une démo gratuite est disponible pour vous permettre d’examiner le fichier mais pas de le sauvegarder.

J’ai trouvé que l’ introduction de GNU au format PDF était utile pour comprendre la structure. Il comprend un exemple de fichier PDF facilement lisible , qu’il décrit en détail.

Autres liens utiles:

  • PDF Le livre succinct est plus long et contient des images utiles.
  • Introduction aux frontières de PDF est une présentation qui n’est pas aussi approfondie, mais donne un aperçu rapide et contient de nombreuses images.

Voici la référence brute de PDF 1.7 , et voici un article décrivant la structure d’un fichier PDF . Si vous utilisez Vim, le plug – in pdftk est un bon moyen d’explorer le document sous une forme un peu moins brute, et l’utilitaire pdftk lui-même (et sa source GPL) est un excellent moyen de distinguer les documents.

J’essaie de faire à peu près la même chose. La référence PDF est un document très difficile à lire. Je pense que ce tutoriel est un meilleur départ.

Cela peut aider à jeter un peu de lumière: (à partir de la page 11 de PDF32000.book)

La syntaxe PDF est mieux comprise en la considérant comme quatre parties, comme le montre la figure 1:

• Objets. Un document PDF est une structure de données composée d’un petit ensemble de types de base d’objects de données. La sous-clause 7.2, “Conventions lexicales”, décrit le jeu de caractères utilisé pour écrire des objects et d’autres éléments syntaxiques. La sous-clause 7.3, “Objets”, décrit la syntaxe et les propriétés essentielles des objects. La sous-clause 7.3.8, “Objets de stream”, fournit des détails complets sur le type de données le plus complexe, à savoir l’object de stream.

• Structure du fichier. La structure de fichier PDF détermine la manière dont les objects sont stockés dans un fichier PDF, leur mode d’access et leur mise à jour. Cette structure est indépendante de la sémantique des objects. Le sous-paragraphe 7.5, “Structure de fichier”, décrit la structure du fichier. La sous-clause 7.6, “Cryptage”, décrit un mécanisme de niveau fichier pour protéger le contenu d’un document contre les access non autorisés.

• Structure du document. La structure du document PDF spécifie comment les types d’object de base sont utilisés pour représenter les composants d’un document PDF: pages, fonts, annotations, etc. La sous-clause 7.7, “Structure du document”, décrit la structure globale du document; les clauses ultérieures abordent la sémantique détaillée des composants.

• stream de contenu. Un stream de contenu PDF contient une séquence d’instructions décrivant l’apparence d’une page ou d’une autre entité graphique. Ces instructions, bien que représentées comme des objects, sont conceptuellement distinctes des objects qui représentent la structure du document et sont décrites séparément. Le sous-paragraphe 7.8, “Flux de contenu et ressources”, traite des stream de contenu PDF et de leurs ressources associées.

Il semblerait que la navigation dans un fichier PDF nécessite un peu plus d’un effort.

L’extraction de texte à partir de fichiers PDF est un problème difficile, car le format PDF est doté d’une telle structure. Vous pouvez voir la documentation et le code source de ma tentative à peine réussie sur CPAN (mon implémentation est en Perl). La structure de données PDF est très cool et bien conçue, mais elle est plus facile à écrire qu’à lire.

Une façon d’obtenir des indices est de créer un fichier PDF constitué d’une page blanche. J’ai CutePDF Writer sur mon ordinateur et j’ai créé un document WordPad vierge d’une page. Imprimé dans un fichier .pdf, puis ouvert le fichier .pdf à l’aide du Bloc-notes.

Ensuite, utilisez une copie de ce fichier et éliminez les lignes ou les blocs de texte susceptibles de vous intéresser, puis rechargez-la dans Acrobat Reader. Vous seriez surpris de constater combien peu d’informations sont nécessaires pour créer un document PDF d’une page qui fonctionne.

J’essaie de créer un tableur pour créer un formulaire PDF à partir du code.

Si vous souhaitez parsingr PDF à l’aide de Python, consultez PDFMINER . C’est la meilleure bibliothèque pour parsingr les fichiers PDF jusqu’à la date.