Les métadonnées embarquées dans les documents PDF
Par Patrick Peccatte le mardi 5 janvier 2010, 10:58 - métadonnées - Lien permanent
Résumé : Depuis son introduction en 1993, le format PDF supporte un jeu très simple de métadonnées internes habituellement nommé Document Info. Il s'agit de six champs textuels libres qui décrivent le document et son moyen de production (Titre, Auteur, Sujet, Mots-clés, Producteur du PDF, Application) et deux champs de type date (Date de création, Date de modification). Adobe a ensuite défini XMP en 2001 et introduit cette dernière technologie progressivement dans tous les formats de fichiers gérés par ses applications. Les documents PDF supportent donc désormais deux types de métadonnées embarquées : le Document Info « historique » et les informations XMP beaucoup plus élaborées. Ce billet décrit trois caractéristiques permettant d'évaluer si un logiciel gère correctement ces métadonnées.
Les métadonnées Document Info ont parfois été négligées par les producteurs de documents, en grande partie sans doute parce que les moteurs de recherche indexent facilement les contenus des PDF textuels. L'introduction de XMP permet maintenant de développer des applications PDF nouvelles basées sur des schémas de métadonnées spécifiques. À titre d'exemples, on peut mentionner la description bibliographique précise des articles de revues et les informations pré-presse du Ghent PDF Workgroup.
Les systèmes de gestion de contenu (CMS), de gestion de ressources numériques (DAM) ainsi que d'autres logiciels comme le partage de bibliographies (Mendeley par exemple) exploitent aussi, à des degrés divers, les métadonnées des documents PDF. Ce regain d'intérêt pour les métadonnées embarquées dans les documents PDF appelle cependant quelques précautions et tout d'abord de connaître les caractéristiques des logiciels chargés de la lecture et de l'écriture de ces informations. Mais pour comprendre cela, nous devons décrire très succinctement la structure d'un document PDF.
Un fichier PDF est un ensemble hiérarchisé d'objets organisés en arbres et listes liées. Une table de références croisées (cross-reference table, en abrégé xref) située à la fin du fichier décrit l'organisation des objets à l'intérieur du document. Lors de la génération du PDF et si aucune mise à jour n'est intervenue, la table xref est constituée d'une seule section. Chaque fois que le document est modifié, de nouvelles sections sont ajoutées à la table xref. Certains objets du document sont alors marqués comme libres dans la table xref. Il s'agit là du mécanisme de mise à jour incrémentielle (incremental update) qui permet d'effectuer de petits changements sur un document PDF sans avoir à recomposer tout le fichier. Lors de mises à jours minimes, comme dans le cas de l'édition de métadonnées effectuées avec certains logiciels, des objets contenant les nouvelles informations sont ajoutés à la fin du fichier, certains objets deviennent obsolètes, une ou plusieurs sections sont marquées comme libres dans la table xref qui peut alors devenir morcelée, et au final la taille du document augmente alors un peu.
En conséquence :
- une application qui exploite les métadonnées embarquées dans un document PDF doit « comprendre » le format, c'est-à-dire savoir repérer les objets contenant les métadonnées en question dans la structure PDF en naviguant dans le document à l'aide de la table xref. C'est évident pour l'écriture bien sûr, mais c'est également nécessaire pour la lecture des informations. Il ne suffit pas de scanner linéairement le document du début à la fin à la recherche de marqueurs discriminants pour les Document Info ou les segments XMP (ce que font certains programmes !). En effet, le mécanisme de mise à jour incrémentielle peut conduire à ce qu'un document PDF possède plusieurs Document Info ou segments XMP correspondants aux mises à jours successives du document.
- l'utilisation successive d'outils divers pour mettre à jour les métadonnées peut conduire à une situation où les informations contenues en Document Info et celles qui leur correspondent normalement en XMP ne sont pas identiques. Ainsi, le document PDF peut avoir pour auteur « X » lorsqu'on lit les métadonnées avec un logiciel qui exploite uniquement Document Info et « Y » lorsqu'il est exploité avec un logiciel lisant correctement XMP. Il s'agit là d'une situation analogue à celle que l'on connaît bien avec les images numériques où les informations IPTC peuvent parfois apparaître non synchronisées avec les informations XMP. Un logiciel permettant d'éditer les métadonnées embarquées dans les documents PDF doit donc être capable de synchroniser les informations Document Info et XMP, ou à tout le moins - s'il n'est pas compatible XMP - prévenir l'utilisateur que certaines informations peuvent ne pas apparaître en concordance après modification.
- il est indispensable de pouvoir importer et exporter les métadonnées au format XMP et sous la forme de fichiers autonomes (habituellement suffixés .xmp). À ma connaissance en effet, seules les applications Adobe permettent d'éditer directement des métadonnées XMP embarquées dans des PDFs en définissant des custom panels. Il est donc nécessaire de disposer d'un mécanisme d'import/export de métadonnées XMP spécifiques qui de plus doit maintenir la cohérence avec les informations correspondantes en Document Info et autoriser la mise à jour sur un lot de documents.
Il existe une multitude de logiciels permettant de générer et éditer ponctuellement des documents PDF (voir par exemple ici, sur Planet PDF, PDF Zone, The PDF Lounge, etc.). Je n'ai pas la prétention dans ce qui suit de fournir un guide des « bons » logiciels gérant correctement les métadonnées des PDF, mais d'indiquer brièvement quelques confusions à éviter en ce qui concerne certains programmes connus.
Parmi les logiciels qui permettent d'éditer les métadonnées, il n'est pas si facile de repérer ceux qui vérifient les caractéristiques évoquées. Il est très commode par exemple de créer et modifier les métadonnées de nombreux types de fichiers (dont les PDF) avec Adobe Bridge ou Lightroom. Ces deux logiciels synchronisent évidemment parfaitement Document Info et XMP (on remarquera au passage qu'il n'est pas nécessaire d'avoir Acrobat pour travailler sur les métadonnées des PDF). Il suffit pour cela d'activer le menu « Informations ». Mais si l'on observe les onglets « Avancé » ou « Données brutes » (en CS4) sur un document PDF qui ne possède que des métadonnées Document Info, une mise en forme XMP s'affiche laissant croire que le document possède aussi des métadonnées de ce type. Il en est de même avec PDF-XChange Viewer, pourtant l'une des meilleures alternatives gratuite à Acrobat Reader, qui permet d'éditer les métadonnées du jeu Document Info, d'ajouter d'autres métadonnées intéressantes, et d'afficher une vue synthétique du XMP, mais ne permet pas à l'utilisateur de distinguer les deux types de métadonnées.
Bridge et Lightroom permettent d'importer et exporter des fichiers .xmp, fonctionnalités indispensables que ne possède pas PDF-XChange Viewer (dans sa version gratuite tout au moins). À l'inverse, l'excellent Exiftool de Phil Harvey - le couteau suisse pour les métadonnées des images - importe et exporte les métadonnées XMP contenues dans les documents PDF. Mais hélas, il ignore les informations Document Info, ce qui peut conduire à des incohérences. De plus, il est préférable lors d'un import de fichier .xmp réalisé avec Exiftool que le document PDF ne possède pas au préalable d'informations XMP. Pour insérer des informations bibliographiques basées sur les DOI, on peut aussi essayer Crossrefs PDFMark (mais je n'ai jamais pu importer avec ce programme des informations stockées dans un fichier .xmp).
Il existe aussi des solutions commerciales (assez chères) comme Traction Software PDF Info.
Si l'on est certain que les PDFs manipulés ne possèdent pas de métadonnées XMP, plusieurs logiciels gratuits permettent d'éditer les informations classiques Document Info. J'en ai mentionné quelques-uns dans un billet précédent.
L'un des plus intéressants est BeCyPDFMetaEdit de Benjamin Bentmann. Bien qu'il ne gère correctement que les Document Info, ce programme permet de savoir si le document PDF contient aussi des métadonnées XMP. Il permet également de supprimer les métadonnées XMP, ce qui peut parfois être intéressant si l'on veut travailler uniquement avec les Document Info ou réinjecter d'autres métadonnées XMP à l'aide d'un autre programme. [On rappelle que « supprimer » dans une structure PDF peut signifier « marquer comme non utilisé », autrement dit un programme mal conçu qui utilise un document dont on a ainsi effacé des informations peut éventuellement détecter incorrectement des métadonnées.]
Enfin, pour les programmeurs, on mentionnera iText, PDF Lib, Hyperxmp dans le monde Latex, qui permettent entre autres la gestion des métadonnées des PDF, mais on utilisera avec précaution pdftk qui ne gère pas encore XMP.
Bonne Année 2010 !
Commentaires
L'outil Jhove (http://hul.harvard.edu/jhove/) permet d'extraire toute les métadonnées et propriétés d'un fichier PDF, y compris XMP et document Info, de valider le fichier PDF par rapport à un profil d'utilisation du PDF qu'il repère automatiquement (cf. http://hul.harvard.edu/jhove/pdf-hu...). En revanche, il ne permet pas l'édition de ces métadonnées.
Concernant les métadonnées elles-mêmes, trois remarques :
- j'ai eu l'impression d'un bazar indescriptible quand j'ai commencé à traiter des méta embarqués dans un PDF et votre billet ne fait que le confirmer (mais, j'ai l'impression que c'est généralement le cas des métadonnées embarqués, ID3 c'est la même chose) ;
- je trouve XMP très incomplet par rapport aux besoins et aux informations qu'on trouve par exemple dans MIX pour les images ou même EXIF ;
- conséquence du précédent, il n'existe pas de format de métadonnées efficace et complet pour décrire les fichiers composites tels que PDF.
Merci pour la référence à Jhove. J'en avais entendu parler il y a pas mal de temps, mais comme je ne l'ai jamais pratiqué, je n'y ai pas pensé.
À propos de la première de vos remarques, la complexité du stockage des métadonnées dans les PDFs est en grande partie liée à la structure du format. Sur un document qui n'a pas subi de mise à jour incrémentielle, c'est assez simple de s'y retrouver à partir de la table xref. Mais de toute façon, il est quand même plus prudent de passer par une bibliothèque éprouvée pour le faire plutôt que de le programmer directement.
Concernant vos deux autres remarques, vous savez bien sûr comme moi que XMP est juste un framework. On peut facilement recoder tout Exif en XMP (ce que Photoshop fait par exemple; pour MIX, je ne sais pas bien). Ce que je veux dire, c'est que si XMP possède des insuffisances, il ne faut pas confondre celles-ci avec l'absence de schémas spécifiques qui devraient être développés par différents consortiums ou organismes pour répondre à leurs besoins. La question qui se pose est surtout que ces "futurs" schémas deviennent un tant soit peu répandus et normalisés. Donc oui, on peut imaginer mieux que XMP, en particulier pour décrire les documents composites, mais si l'on va au bout de XMP, on peut déjà faire des choses intéressantes.
Merci pour toutes ces informations; cela fait le point et recoupe mes impressions concernant les difficultés de disposer d'info claire et techniquement abordables par un non expert sur les métadonnées pdf et xmp.
Je travaille avec Adobe PDF Pro 9; l'édition par lot de métadonnées document info synchronise l'xmp il me semble. (C'est la moindre des choses quand on y pense).
Le point sur Exiftool me conforte dans mon choix de ne pas l'utiliser (pour l'instant).
Je cherche encore un moyen de traiter les métadonnées (document info + xmp) des pdf par lot (pilotage en ligne de commande).
Effectivement, autant Exiftool est excellent pour tout ce qui touche aux images, autant je ne le conseillerais pas pour traiter des métadonnées des PDFs tout au moins dans un contexte professionnel.
Une solution assez simple à mettre en oeuvre pour des traitements batch consiste à développer des petits scripts avec Acrobat (ou éventuellement avec d'autres produits Adobe). Voir des exemples sur pdfscripting.com
En ligne de commande, voir du côté d'utilitaires comme Traction Software PDF Info.
Ou pour des choses plus pointues, programmer avec iText (si on aime java) ou pdflib (si on préfère autre chose...).