Un PDF est un conteneur d'objets numérotés, d'une table qui indique où commence chacun et d'une fin de fichier (trailer) qui dit par où commencer la lecture. Les pages sont des objets, les polices sont des objets, et les instructions de dessin de chaque page forment un flux d'opérateurs. Travaillez sur les fichiers avec le rotateur de PDF, l'éditeur de métadonnées PDF et le convertisseur PDF vers texte ; le terme est défini dans PDF (Portable Document Format).
Les quatre parties d'un fichier
- En-tête :
%PDF-1.4indique la version. - Corps : objets numérotés comme
3 0 obj ... endobj(numéro d'objet, génération, puis contenu). - Table de références croisées (
xref) : pour chaque objet, le décalage en octets où il commence, afin qu'un lecteur y saute directement. - Fin de fichier (trailer) : désigne l'objet racine (
/Root) et se termine parstartxref, le décalage de la table, puis%%EOF.
Un PDF minimal complet
Ce fichier d'une page est complet. Ses décalages sont réels : pdfinfo le lit comme une page de 200 × 100 points et pdftotext en extrait « Hello PDF ».
%PDF-1.4
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /MediaBox [0 0 200 100] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >>
endobj
4 0 obj
<< /Length 39 >>
stream
BT /F1 18 Tf 20 50 Td (Hello PDF) Tj ET
endstream
endobj
5 0 obj
<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>
endobj
xref
0 6
0000000000 65535 f
0000000009 00000 n
0000000058 00000 n
0000000115 00000 n
0000000241 00000 n
0000000330 00000 n
trailer
<< /Size 6 /Root 1 0 R >>
startxref
400
%%EOF
Comment les pièces s'assemblent
- Le catalogue
/Rootpointe vers l'arbre des pages (/Pages), qui énumère les pages (/Kids). - Chaque page a une
/MediaBox(taille en points ; 72 points = 1 pouce) et/Contents, un flux commeBT ... ETqui choisit une police, se déplace à une position et affiche du texte. - Les ressources comme les polices sont référencées par nom (
/F1) et définies ailleurs. - Les vrais fichiers compressent les flux (
/Filter /FlateDecode) et regroupent de nombreux objets dans des flux d'objets pour gagner de la place. - Les métadonnées résident dans le dictionnaire
/Infoet, en option, dans XMP ; consultez-les et modifiez-les avec l'éditeur de métadonnées PDF.
Pourquoi c'est important
- Les modifications peuvent être enregistrées comme une mise à jour incrémentielle : de nouveaux objets et une nouvelle
xrefsont ajoutés, et les anciens restent dans le fichier. Un contenu supprimé ou caviardé peut rester récupérable. - L'extraction du texte dépend de la façon dont une police associe glyphes et caractères ; les pages numérisées ne contiennent que des images et demandent de la reconnaissance de caractères (OCR).
- Une
xrefcorrompue peut souvent être reconstruite en cherchant les marqueursobj, ce que font de nombreux lecteurs pour réparer des fichiers abîmés. - Pour vérifier qu'un document ne cache pas de modifications, voyez Comment vérifier qu'un PDF ne contient pas de modifications cachées.