PDF/A-3 vs PDF classique : pourquoi Factur-X l'exige
Un PDF Factur-X n'est pas un PDF ordinaire : c'est un PDF d'archive avec une pièce jointe XML.
Un fichier Factur-X est toujours un PDF, mais pas n'importe lequel. La spécification de la FNFE-MPE impose qu'il soit conforme à PDF/A-3, une sous-norme ISO d'archivage long terme. Cette contrainte n'est pas cosmétique : c'est elle qui autorise l'embarquement du fichier factur-x.xml à l'intérieur du PDF, et c'est elle qui garantit que la facture reste lisible dans dix ou vingt ans.
Cet article explique la différence entre un PDF classique et un PDF/A-3, pourquoi Factur-X a spécifiquement besoin du niveau A-3 (et pas A-1 ni A-2), et comment vérifier la conformité d'un fichier généré.
PDF/A : la norme d'archivage long terme
PDF/A est un sous-ensemble du format PDF, normalisé par l'ISO sous la référence ISO 19005. Son objectif est unique : garantir qu'un document reste affichable de la même manière indépendamment du logiciel, de la plateforme ou de l'époque de consultation. Pour y arriver, la norme interdit tout ce qui rend un PDF dépendant d'un environnement externe :
- Polices embarquées obligatoires : impossible de référencer une police installée sur le poste (Arial, Calibri…). Toutes les glyphes utilisées doivent être incluses dans le fichier.
- Pas de JavaScript ni de contenu actif (formulaires interactifs scriptés, audio, vidéo) : un PDF/A doit s'afficher passivement.
- Profil de couleur ICC obligatoire : sRGB, CMYK ou autre, déclaré dans les métadonnées pour que le rendu colorimétrique soit reproductible.
- Pas de chiffrement ni de DRM : le fichier doit rester librement lisible.
- Métadonnées XMP au format standard (Dublin Core, PDF/A identification) plutôt que dans le seul dictionnaire
/Infohérité des premières versions de PDF. - Pas de références externes : pas de liens vers des feuilles de style, polices ou contenus hébergés ailleurs.
Un PDF classique généré par Word, Chrome ou n'importe quelle bibliothèque d'impression échoue généralement à plusieurs de ces critères : il peut référencer une police système, ignorer le profil ICC, et utiliser des métadonnées non standardisées. Il s'ouvre sans problème aujourd'hui, mais rien ne garantit son rendu dans vingt ans.
A-1, A-2, A-3 : les sous-niveaux ISO 19005
La norme ISO 19005 a été publiée en trois parties successives, chacune correspondant à une version du PDF de base et apportant des assouplissements. Chaque partie définit en outre des niveaux de conformité (b pour basic, a pour accessible, u pour Unicode).
| Norme | Année | Base PDF | Apport principal |
|---|---|---|---|
| PDF/A-1 (ISO 19005-1) | 2005 | PDF 1.4 | Première norme d'archivage. Très restrictif : pas de transparence, pas de couches. |
| PDF/A-2 (ISO 19005-2) | 2011 | PDF 1.7 | Transparence, calques, JPEG 2000, signatures numériques. Pièces jointes uniquement si elles sont aussi PDF/A. |
| PDF/A-3 (ISO 19005-3) | 2012 | PDF 1.7 | Identique à A-2 sur le rendu, mais autorise les pièces jointes de n'importe quel type (XML, CSV, tableurs, etc.). |
Le niveau de conformité le plus utilisé est b (basic) : il garantit le rendu visuel reproductible. Le niveau a ajoute l'accessibilité (structure logique, tags, ordre de lecture) et le niveau u ajoute la garantie que tout le texte est extractible en Unicode. Pour Factur-X, c'est le niveau PDF/A-3b qui est exigé par la spécification — pas d'accessibilité obligatoire, juste le rendu reproductible et la capacité d'embarquer une pièce jointe arbitraire.
Pourquoi Factur-X a besoin de A-3
Le cœur du format Factur-X tient en une phrase : un PDF lisible par un humain qui contient, en pièce jointe, un fichier XML structuré lisible par une machine. Cette dualité exige deux choses simultanément :
- Un format d'archive long terme (les factures doivent être conservées 10 ans en droit fiscal français — article L102 B du Livre des procédures fiscales).
- La possibilité d'embarquer un fichier arbitraire (du XML, pas du PDF) à l'intérieur du PDF, en le marquant explicitement comme donnée associée.
PDF/A-1 ne permet aucune pièce jointe. PDF/A-2 n'autorise que des pièces jointes elles-mêmes conformes PDF/A. Seul PDF/A-3 permet d'embarquer un XML, et c'est précisément pour répondre à ce besoin (factures électroniques, données scientifiques, fichiers d'accompagnement) qu'il a été normalisé en 2012.
La spécification Factur-X impose en outre que la pièce jointe :
- Porte le nom exact
factur-x.xml(en minuscules, tiret obligatoire). - Soit déclarée avec la relation
/AFRelationship /Alternative, qui signale que le fichier joint est une représentation alternative du contenu visuel du PDF. - Soit référencée dans l'Associated Files du document (entrée
/AFdu dictionnaire racine), pas seulement dans le panneau des pièces jointes. - Soit accompagnée d'une déclaration XMP
fx:DocumentType,fx:DocumentFileNameetfx:ConformanceLevelindiquant le profil Factur-X (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED). Voir notre article différences entre profils Factur-X.
Un PDF qui contiendrait factur-x.xml en simple pièce jointe sans ces déclarations ne serait pas reconnu par les outils de lecture comme une facture électronique : ce serait juste un PDF avec un fichier dedans. La conformité PDF/A-3 et le marquage /AF sont les deux conditions nécessaires.
Conformité A-3b : ce qu'il faut vérifier en pratique
Concrètement, fabriquer un PDF/A-3b conforme implique plusieurs vérifications systématiques en sortie de générateur :
| Critère | Bonne pratique | Erreur fréquente |
|---|---|---|
| Polices | Toutes embarquées (sous-ensemble ou complet) | Référence à Arial, Helvetica, Times sans embarquement |
| Couleurs | Profil ICC déclaré (souvent sRGB) | Couleurs RGB sans profil → ambiguïté colorimétrique |
| Métadonnées | XMP complètes : titre, auteur, date, identifiant PDF/A-3 | Champs /Info hérités, pas de XMP |
| Pièce jointe | Déclarée dans /AF avec relation /Alternative | Attachée via /EmbeddedFiles seul, sans /AF |
| Contenu interdit | Aucun JavaScript, aucun chiffrement, aucune action externe | Actions Adobe (/Launch, /SubmitForm) résiduelles |
| Identifiant PDF/A | XMP pdfaid:part = 3 et pdfaid:conformance = B | Absent ou hérité d'un PDF/A-1b |
Les bibliothèques de génération sérieuses (WeasyPrint avec post-traitement Ghostscript, Apache PDFBox, iText, ou la bibliothèque Python factur-x d'Akretion qui s'appuie sur pikepdf) produisent un PDF/A-3b conforme si elles sont correctement configurées. Un export PDF brut depuis Word, Chrome ou LibreOffice ne suffit pas : il faut systématiquement une étape de post-conversion ou d'assemblage.
Comment valider un PDF/A-3 : veraPDF
L'outil de référence pour valider la conformité PDF/A est veraPDF, développé par un consortium soutenu par le projet européen PREFORMA et adopté par les bibliothèques nationales. Il applique l'intégralité des règles de la norme ISO 19005-3 sous forme d'un profil de validation et produit un rapport détaillé des écarts éventuels.
En ligne de commande :
verapdf --format text --flavour 3b facture.pdfvalide le fichier contre le profil A-3b.- Le code de retour est 0 si le fichier est conforme, non nul sinon, ce qui permet d'intégrer la validation dans un pipeline CI.
Notre validateur intègre veraPDF côté serveur dans le pipeline de validation, en plus des contrôles XSD et Schematron sur le XML. Pour simplement regarder le contenu d'un PDF Factur-X reçu — voir le XML, la pièce jointe, les métadonnées — vous pouvez aussi utiliser le visualiseur, qui ne fait pas de validation stricte mais affiche la structure.
À noter : veraPDF valide la conformité PDF/A-3 au sens ISO, mais pas la conformité Factur-X. Un PDF/A-3b sans les déclarations /AFRelationship ni les métadonnées XMP fx:* sera vert pour veraPDF mais invalide pour un récepteur Factur-X. Les deux contrôles sont complémentaires.
Ce qu'il faut retenir
- Un PDF Factur-X est un PDF/A-3b : norme d'archivage long terme + pièce jointe arbitraire.
- Les niveaux A-1 et A-2 ne suffisent pas : seul A-3 autorise une pièce jointe XML.
- La conformité tient à six critères principaux : polices embarquées, profil ICC, XMP, pas de contenu actif, pièce jointe correctement déclarée dans
/AF, et identifiant PDF/A-3 dans XMP. - veraPDF est l'outil de référence pour vérifier la conformité ISO ; un validateur Factur-X complet ajoute par-dessus les contrôles sur le XML et les métadonnées
fx:*.
Pour aller plus loin sur le format lui-même : qu'est-ce que Factur-X revient sur le format dans son ensemble, et la spec v1.0.08 du 15 janvier 2026 détaille ce qui s'applique au calendrier français de septembre 2026.