PDF - hackathonBnF/FichesFormat GitHub Wiki

PDF Statut

Description

Le format PDF a été intialement développé par la société Adobe pour présenter une combinaison d'éléments graphiques, textuels et interactifs dans une mise en page constante quel que soit l'environnement de consultation et l'équipement d'impression. Le format est présenté à la conférence dédiée aux systèmes d'exploitation Windows et OS/2 en janvier 1993 et le premier logiciel produisant ce format est commercialisé par Adobe en juin 1993.

Au fil du temps, le format a connu de multiples versions qui ont étendu ses fonctionnalités. En outre, des variantes spécifiques à certains secteurs d'activité l'ont spécialisé pour embarquer des contenus de nature très diverse (cartographie, création graphique, correspondance, modèles 3D, etc.). Il s'agit donc plutôt d'une famille de formats, mais nous utiliserons par commodité le singulier dans la suite de cette fiche.

Il s'agit d'un format propriétaire mais Adobe a publié ses spécifications sous forme de plusieurs normes ISO à partir de 2008 (CPO-DOC). Bien qu'Adobe ait déposé des brevets logiciels sur le format (CPO-LIB), il promeut son utilisation en ne demandant pas de redevance aux applications qui lisent et produisent des fichiers PDF.

Du fait de son adoption généralisée, le format PDF est un format incontournable dont il est nécessaire de connaître les multiples usages et complexités, ainsi que la multiplicité des outils logiciels qui le prennent en charge.

Sociabilité

Le format est omniprésent dans tous les secteurs d'activité. Néanmoins, la couverture réelle des outils est généralement beaucoup plus réduite au regard des fonctionnalités proposées par les spécifications.

Selon un comptage réalisé en 2021 sur un échantillon, PDF est le troisième format le plus présent en ligne, devant tous les formats d'image (Johnson (Duff), « PDF’s popularity online », PDF Association, 10 septembre 2021. Accessible sur https://pdfa.org/pdfs-popul.arity-online/ (consulté le 3 mars 2025)).

Relations à d’autres formats

Le format PDF dérive du langage Postscript dont la vocation est de construire une page comprenant des éléments textuels et vectoriels afin de pouvoir les imprimer avec une mise en page constante. Adobe a stoppé les développements de ce langage en 2007, PDF en étant un des successeurs.

Versions

Les versions successives de PDF ont ajouté de nouvelles fonctionnalités et ont enrichi et complexifié la structure du format (CPO-STA). On notera notamment les versions suivantes, associées à certaines évolutions majeures :

  • 1.0 (1993) ;
  • 1.1 (1996) : autres espaces couleur que RGB, protection par mot de passe, contenus multimédia et hyperliens ;
  • 1.2 (1996) : modèle couleur CMJN, compression Deflate (ZIP), caractères Unicode, formulaires ;
  • 1.3 (2000) : profils ICC, signatures numériques, contenus interactifs Javascript, chiffrement par l'algorithme RC-4 ;
  • 1.4 (2001) : transparence, balisage de la structure du texte ;
  • 1.5 (2003) : calques (layers), compression JPEG 2000 ;
  • 1.6 (2004) : chiffrement AES, encapsulation de fichiers, contenus 3D au format U3D, filigrane ;
  • 1.7 (2006) : paramétrage par défaut de l'impression, fonctionnalité de caviardage (redaction), portfolios ;
  • 2.0 (2017/2020) : chiffrement AES-256, données de géoréférencement, améliorations diverses.

On trouve un résumé des principaux points saillants de chaque nouvelle version dans la cheatsheet sur les bases du PDF.

En outre, plusieurs variantes du format ont été développées pour des usages spécifiques ; il s'agit toujours de spécialisations intégrant des contraintes supplémentaires adaptées aux besoins de chaque secteur d'activité. On citera notamment :

  • PDF/A pour l'archivage, spécialisation très restreinte aux fonctionnalités ne risquant pas de poser de problème de préservation à long terme ;
  • PDF/E pour l'ingénierie, spécialisation permettant d'embarquer des modèles 3D (la PDF Association recommande désormais d'utiliser de préférence la norme PDF/A-4e pour ce cas d'usage) ;
  • PDF/X pour l'impression (« X » pour « exchange ») ;
  • PDF/UA pour l'accessibilité (« UA » pour « universal accessibility » ;
  • PDF/R pour le transport et la conservation d'images fixes issues de la numérisation (« R » pour « raster »).

On se reportera à cette page pour une description de ces variantes par la PDF Association.

Contenu

La structure du PDF est textuelle, mais le format comprend également des parties binaires embarquées dans des object streams dont l'encodage est spécifié dans leur attribut \Filter. Pour en savoir plus, voir la présentation d'Ange Albertini sur l'anatomie d'un PDF.

Les PDF issus d'une numérisation peuvent être constitués d'une simple série d'images, une par page, mais les PDF nativement numériques sont le plus souvent beaucoup plus complexes et composés d'une combinaison d'éléments textuels, vectoriels ou matriciels, voire interactifs, superposés.

Texte

Le format PDF peut embarquer du texte, mais il est présent sous forme de glyphes (forme typographique d'un caractère dans une police donnée) localisés sur la page par des coordonnées. Cette caractéristique rend souvent problématique l'extraction de texte depuis un PDF. Pour plus de détails, voir le billet de blog « What's so hard about PDF text extraction? », accessible sur https://web.archive.org/web/20230107081641/https://filingdb.com/b/pdf-text-extraction.

Le PDF peut contenir une description arborescente de la structure logique du document, à partir d'un object nommé Structure Tree Root (StructTreeRoot). Des pointeurs situés dans cette arborescence font le lien avec les objets décrivant des contenus textuels ou images. La présence de cette description logique est conditionnée à l'intégration de tels éléments à l'étape de création du fichier.

Polices

Le PDF peut embarquer en totalité ou partiellement les polices de caractères utilisées dans les éléments textuels, ce qui est recommandé afin de garantir une restitution fidèle : si la police choisie n'est pas embarquée et n'est pas disponible sur la machine du lecteur, elle sera remplacée par une police de substitution, ce qui pourra affecter sensiblement la mise en page.

Dans le cas où la présence des polices dans le fichier fait craindre leur récupération, il est possible d'embarquer uniquement le sous-ensemble des caractères effectivement utilisés dans les éléments textuels, ou bien même de vectoriser le texte.

Images

Les images embarquées dans un PDF peuvent être encodées selon différents algorithmes de compression :

  • Réversibles, adaptés aux images binarisées : CCITT Groupe 4, JBIG2 ;
  • Réversibles, adaptés à tout type de données : Deflate (ZIP), LZW, RLE ;
  • Avec pertes : JPEG ;
  • Avec ou sans pertes : JPEG 2000.

Chaque image, décrite comme un object dans le PDF, dispose d'un attribut Filter qui indique le type de compression ; sa valeur est respectivement : « CCITTFaxDecode », « JBIG2Decode », « FlateDecode », « LZWDecode », « RunLengthDecode », « DCTDecode », « JPXDecode ».

Signature numérique

Le format PDF gère des mécanismes de signature numérique (CPO-PRO).

Autres contenus

Le PDF peut contenir un très grand nombre de contenus :

  • Zones de formulaire ;
  • Hyperliens ;
  • Contenus audio et vidéo ;
  • Contenus 3D ;
  • Commentaires ;
  • Boutons et éléments interactifs en Javascript.

Certaines de ces fonctionnalités (les formulaires, par exemple) ne sont gérées correctement que par Adobe Reader.

Depuis la version 1.7, les PDF de type « portfolio » sont des conteneurs arbitraires embarquant toutes sortes de fichiers. Néanmoins, même dans le cas d'un PDF « standard », il est possible d'embarquer des flux de toute nature dans des objects contenant des flux (streams).

Parmi les usages envisagés du PDF, on peut citer l'archivage des courriers électroniques. La PDF Association, en collaboration avec des institutions de conservation, a décrit une spécialisation du PDF répondant à cet usage (voir l'annonce de cette publication).

Organisme de maintenance et documentation de référence

Initialement développé par Adobe, le format PDF est dpuis 2008 normalisé à l'ISO sous l'identifiant ISO 32000. Du fait que l'évolution du format est désormais soumise à la révision de la norme ISO, Adobe a depuis cette date proposé des extensions pour ses besoins propres. On mentionnera les suppléments « extension level 3 » qui ajoute notamment l'incorporation de données géoréférencées et la gestion du chiffrement AES-256 et « extension level 5 ». Ces extensions ont été intégrées dans la norme PDF v. 2.0.

La PDF Association met gratuitement à disposition la norme ISO 32000-2:2020, correspondant à la version 2.0 de PDF, à cette adresse. Elle propose également de très utiles cheatsheets, mémentos rappelant de manière concise et rapide les principes de PDF.

Johann van der Knijff (Bibliothèque royale des Pays-Bas) réunit sur son blog Bitsgalore une documentation conséquente sur les risques de préservation posés par le format PDF. On se référera utilement à son billet sur l'identification de risques à l'aide des outils JHOVE et veraPDF.

Identifiants

Extension(s) : .pdf.

Type(s) MIME : application/pdf.

Registre Identifiant
Wikidata Q42332 et un item par version du format
Bibliothèque du Congrès fdd000030 et de nombreux autres pour les versions et variantes du format
PRONOM Un identifiant par variante et version du format, voir ce tableau
Just Solve the File Format Problem PDF

Caractéristiques techniques

Le format PDF est notoirement un format complexe du fait de sa structure, de la diversité des contenus et de la multiplicité des encodages que ces contenus peuvent adopter (CPO-SIM). Il s'agit d'un format textuel intégrant des parties binaires sous forme de flux (streams). Sa transparence est limitée par un éventuel chiffrement et les couches d'encodage divers des chaînes de caractère et des flux (CPO-TRA). Les opérations suivantes peuvent être envisagées dans le but de comprendre la structure et diagnostiquer des problèmes de restitution :

  • Déchiffrement du PDF (par exemple avec la ligne qpdf --decrypt) ;
  • Décodage des flux et encodage des flux binaires en hexadécimal avec la ligne de commande mutool clean -da ;
  • Production d'une version inspectable et éditable par un éditeur de texte à l'aide de la ligne de commande qpdf --qdf.

Les PDF sont souvent relativement compacts car les images embarquées peuvent être compressées à l'aide de divers algorithmes.

Taille de la page

La taille d'une page d'un PDF se trouve dans un object de type MediaBox, en nombre de points (le point étant par défaut 1/72e de pouce ; ainsi, une page A4 dans une résolution de 72 ppp aura souvent pour valeurs 0 0 595 842). Il est possible de spécifier en supplément une taille plus réduite dans un object de type CropBox. C'est cette portion, plus réduite, qui sera affichée par un lecteur, les parties marginales restant invisibles. (Cette fonctionnalité permet notamment, pour les PDF à imprimer, de placer des chartes couleur CMJN qui ne seront donc pas visibles dans le produit final.)

Modifications incrémentales

Lorsqu'un PDF a été édité, il est parfois possible de revenir à son état précédent à condition que la modification ait été enregistrée sous forme de modification incrémentale (incremental update). Dans ce cas, l'outil enregistre les nouveaux objects ou redéfinit des objects existants à la suite du marqueur de fin de fichier %%EOF. De ce fait, supprimer ce qui suit le(s) marqueur(s) %%EOF dans un éditeur hexadécimal permet de restaurer la (les) précédente(s) version(s) du PDF. Il est cependant recommandé de le faire avec un outil spécialisé. On peut notamment citer l'outil Apache Tika qui, utilisé avec l'option -z peut extraire du PDF la version antérieure, tout comme l'outil PDFResurrect.

Sécurité et chiffrement

L'ouverture d'un PDF peut être protégée par la définition d'un mot de passe de type user. Cette protection restreint l'ouverture et la consultation du contenu du fichier ; la protection est variable, de très faible (RC4 40 bits) à très solide (AES-256). Dans ce cas, les outils d'analyse (Apache Tika, JHOVE, veraPDF, etc.) échouent également à analyser le contenu du PDF et renvoient une erreur plus ou moins explicite.

En complément, le format PDF définit un certain nombre d'autorisations protégeant l'impression à basse ou haute définition, l'extraction de contenu pour des besoins d'accessibilité ou non, l'assemblage, le commentaire, le remplissage de formulaire et toute autre modification. La protection des PDF passe par un chiffrement du texte et des flux (stream objects) du PDF et la définition d'un mot de passe de type owner/creator. Il est possible de connaître les actions interdites sur le fichier grâce à la commande qpdf --show-encryption. Un tel chiffrement, contrairement à celui qui conditionne l'ouverture du PDF à l'entrée d'un mot de passe, est souvent aisé à supprimer grâce à la commande qpdf --decrypt. Par ailleurs, ces autorisations ne sont qu'indicatives et le choix de les respecter ou non repose sur les logiciels de lecture et édition de PDF.

Linéarisation

Les PDF peuvent être « linéarisés » (linearized) afin d'optimiser leur transfert par réseau et donc leur visualisation en ligne. Un PDF linéarisé peut ainsi être affiché progressivement à l'utilisateur·ice sans attendre son téléchargement complet.

Métadonnées internes

Le format PDF peut embarquer des métadonnées internes au format XMP.

Une liste de propriétés signifiantes des fichiers PDF a été proposée par Tyler Thorsted.

Outils connus par la BnF

Un billet du blog Bitsgalore précédemment cité réunit une liste très complète d'outils pour travailler avec le format PDF.

  • Lecture : il existe de nombreux logiciels, mais, bien que tous tentent de restituer des documents mal formés, leur tolérance à l'erreur est variable. Un PDF peut donc être illisible avec un lecteur et s'afficher avec un autre. Adobe Reader est le plus complet ; bien qu'il soit distribué gratuitement, il n'est pas libre. L'outil de lecture Sumatra, disponible exclusivement sur Windows, a l'avantage d'actualiser le PDF en temps réel lorsque le fichier est modifié dans un éditeur en parallèle.
  • Inspection et débogage : Apache PDFBox dispose d'une commande debug qui permet d'inspecter la structure du PDF et ses objets en en donnant une représentation visuelle parallèle. L'outil MuPDF dispose d'utilitaires utiles pour obtenir des informations sur le PDF, y compris sur ses problèmes de structure (mutool info <nom_de_fichier>), recalculer les offsets des objets composant le PDF et leur longueur (mutool clean <nom_de_fichier>) et décompresser les flux binaires si l'on souhaite explorer le PDF (mutool clean -d <nom_de_fichier>).
  • Validation : outre le module PDF de JHOVE, de nombreuses bibliothèques et outils en ligne de commande renvoient des erreurs et avertissements utiles à la compréhension d'éventuels problèmes de structure. On en trouvera une liste dans la section « Validation and integrity testing » du billet de blog de Johan van der Knijff déjà cité. La validation du PDF est une opération complexe et il est de ce fait recommandé de comparer les résultats de plusieurs outils afin d'évaluer la validité des PDF. Une solution simple et apparemment efficace avec Exiftool est proposée dans ce billet de blog : Tunnat (Yvonne), « PDF Validation with ExifTool - quick and not so dirty », Open Preservation Foundation, 4 février 2022. Accessible sur https://openpreservation.org/blogs/pdf-validation-with-exiftool-quick-and-not-so-dirty/ (consulté le 4 novembre 2024).
  • Caractérisation et extraction de métadonnées : on se reportera de même au billet de blog de Johan van der Knijff déjà cité, section « Document information and metadata extraction ».

Attention à ne pas enregistrer un PDF ouvert dans un éditeur de texte : cela modifie généralement les espaces et corrompt la table des offset de chaque object.

Usage ou présence dans les collections de la BnF

De très nombreux PDF ont été collectés dans le cadre de l'archivage du web. En outre, le format ou l'une de ses variantes est un format privilégié par la BnF pour l'obtention des versions finalisées des contenus de notation musicale, d'édition numérique, de cartographie avec ou sans géoréférencement et de création graphique.