Aller au contenu principal

Conformité

Chaque PDF est archivable par défaut : il est produit en PDF/A, la norme ISO d'archivage à long terme, sans rien demander. Un document peut déclarer une autre partie de PDF/A, ajouter une déclaration d'accessibilité (PDF/UA) ou nommer la classe Office Open XML de son DOCX.

Une déclaration n'est inscrite dans le fichier que si le fichier la respecte. Sinon, elle est retirée et le rendu en donne la raison : un document ne porte jamais le nom d'une norme qu'il ne satisfait pas.

Déclarer une conformité​

Les déclarations se trouvent dans metadata.conformance, une liste par format de sortie :

{
"document": {
"metadata": {
"title": "Rapport annuel 2026",
"lang": "fr-CA",
"conformance": { "pdf": ["a-2u", "ua-1"], "docx": ["strict"] }
},
"content": [
{ "h1": "Rapport annuel 2026" },
{ "p": "Le contenu du rapport." }
]
}
}

La liste est un ensemble de remplacements, pas une liste complète. Une famille qu'elle ne mentionne pas garde sa valeur par défaut : ["ua-2"] produit donc toujours un fichier archivable. L'ordre est sans importance, et chaque norme ne se déclare qu'à un seul niveau : deux parties de PDF/A, ou deux parties de PDF/UA, sont refusées comme contradictoires.

PDF/A : archivage​

ValeurNormeÀ utiliser pour
a-2bPDF/A-2bLa valeur par défaut. La page s'affiche à l'identique dans tout lecteur, dans des années
a-2uPDF/A-2u2b, et chaque caractère se copie et se recherche tel qu'il est dessiné. Sans coût supplémentaire ici
a-2aPDF/A-2a2u, et le document est balisé avec sa structure logique
a-3b, a-3u, a-3aPDF/A-3Les trois mêmes niveaux, pour un document qui intègre des fichiers (une facture électronique avec son XML, par exemple)
a-4PDF/A-4L'archivage sur PDF 2.0
a-noneaucuneRenonce à l'archivage par défaut

Sans valeur PDF/A, un document est déclaré a-2b. Trois cas changent cette valeur d'eux-mêmes :

  • un document avec des pièces jointes est déclaré PDF/A-3b, car la partie 2 n'autorise pas les fichiers intégrés et la partie 3 existe pour eux ;
  • un document produit en PDF 2.0 (par pdfVersion, ou par une déclaration définie sur 2.0 comme ua-2) est déclaré PDF/A-4 ;
  • un document chiffré n'est pas archivable.
Les PDF chiffrés ne sont pas archivables

PDF/A interdit le chiffrement, et c'est le chiffrement que vous avez demandé : la valeur par défaut s'efface. Un PDF chiffré est livré sans sa conformité PDF/A, et le rendu le signale. Une définition qui déclare une partie de PDF/A et définit aussi encryption est refusée : choisissez l'un des deux. Pour qu'un document reste à la fois archivable et confidentiel, laissez le PDF non chiffré et protégez-le là où il est stocké et transmis.

a-none désactive l'archivage explicitement, pour tout autre document qui ne doit pas être archivable :

"metadata": { "conformance": { "pdf": ["a-none"] } }

Une liste vide, comme un bloc conformance absent, ne change rien.

Ce que PDF/A vous demande​

Presque tout ce qu'exige PDF/A relève du moteur de rendu : polices intégrées et sous-ensemblées, profils de couleur, métadonnées, et aucune des fonctionnalités que la norme interdit. Trois points dépendent du document :

Le document doitParce que
ne pas être chiffré, s'il déclare PDF/APDF/A interdit le chiffrement : un document chiffré n'est tout simplement pas archivable
utiliser des polices dont la licence autorise l'intégration, s'il fournit les siennesPDF/A intègre chaque police utilisée
ne contenir que des caractères qu'une police disponible sait dessinerun carré vide à la place d'un caractère n'est pas un contenu archivable

PDF/UA : accessibilité​

ValeurNormeProduit en
ua-1PDF/UA-1 (ISO 14289-1)PDF 1.7, avec a-2* ou a-3*
ua-2PDF/UA-2 (ISO 14289-2)PDF 2.0, avec a-4
wtpdf-accessibility, wtpdf-reuseWell-Tagged PDF 1.0PDF 2.0. Chacune implique ua-2, et les deux peuvent être déclarées ensemble

Une déclaration d'accessibilité balise le document pour les lecteurs d'écran et autres technologies d'assistance. Le balisage n'est construit que lorsqu'un document le déclare, car l'arbre de structure représente une grande part de la taille d'un fichier balisé.

L'essentiel de la structure vient de ce que vous avez déjà écrit : les titres deviennent des balises de titre, les tableaux des balises de tableau avec la portée de leurs en-têtes, les listes des balises de liste, une table des matières devient navigable, et les en-têtes, pieds de page et filigranes sont marqués comme éléments de mise en page qu'un lecteur ignore. Les liens, champs de formulaire, formules et codes-barres reçoivent leur description de leur propre contenu.

Ce que PDF/UA vous demande​

Certaines informations ne sont connues que de l'auteur. Sous une déclaration d'accessibilité, le schéma les exige : un éditeur signale celle qui manque pendant la rédaction, et l'API refuse une définition qui en est dépourvue :

CléPourquoi
metadata.titleun lecteur annonce le titre, pas le nom du fichier
metadata.lang, une étiquette comme "en" ou "fr-CA"un lecteur d'écran prononce le texte dans cette langue
alt sur chaque image, ou sur sa définition dans document.imagesun auditeur apprend ce que montre l'image
title ou desc sur chaque svgla même chose, pour les dessins

Et certaines que le schéma ne peut pas vérifier :

  • sous ua-1, les titres commencent à h1 et ne sautent jamais de niveau en descendant ;
  • les cellules d'en-tête sont des th, pour qu'un lecteur dise à quelle colonne ou ligne appartient une valeur ;
  • l'ordre du contenu est l'ordre de lecture : écrivez le document dans l'ordre où il doit être lu ;
  • le sens ne repose jamais sur la seule couleur ou la seule position, et les textes alternatifs et de lien disent quelque chose (« figure 1 » ne décrit rien).

Un champ de formulaire sans label est annoncé par son nom : écrivez un libellé pour des mots qu'une personne dirait.

Déclarations et versions PDF​

Les parties 2 et 3 de PDF/A et PDF/UA-1 sont définies sur PDF 1.7. PDF/A-4, PDF/UA-2 et Well-Tagged PDF sont définies sur PDF 2.0. Les déclarations des deux côtés ne se combinent pas :

DéclarationSortiePeut accompagner
par défaut, a-2*, a-3*PDF 1.7ua-1
a-4PDF 2.0ua-2, wtpdf-*
ua-1PDF 1.7a-2*, a-3*
ua-2, wtpdf-*PDF 2.0a-4 (ce que devient aussi la valeur par défaut)

metadata.pdfVersion fixe la sortie à "1.7" ou "2.0". Sans elle, la version suit les déclarations. Une version fixée n'est jamais remplacée : une déclaration qui la contredit, comme ua-1 avec "2.0", est refusée avant tout rendu.

DOCX : classe Office Open XML​

ValeurClasse
strictISO/IEC 29500 Strict
transitionalISO/IEC 29500 Transitional

Un paquet est conforme à une seule classe : les deux ne peuvent pas être déclarées ensemble. Une classe déclarée est produite telle quelle : ce que Strict ne peut pas porter est omis et signalé, jamais écrit dans l'autre classe.

Quand une déclaration ne peut pas être faite​

  • Refusée avant le rendu. Une contradiction visible dans la définition elle-même (deux parties d'une même norme, a-2b avec ua-2, une déclaration contraire à la pdfVersion fixée), ou une clé qu'exige une déclaration d'accessibilité, est une erreur de validation : rien n'est rendu ni facturé, et le message nomme la clé.
  • Retirée au rendu. Quand le fichier final ne respecterait pas une déclaration, que vous l'ayez demandée ou qu'il s'agisse de l'archivage par défaut, le document est quand même livré et comptabilisé, sans cette déclaration. Les errorCodes de la réponse portent CONFORMANCE_WITHHELD : vérifiez-les avant de transmettre le document. La raison et la clause figurent dans les diagnostics du rendu : activez les diagnostics pendant la rédaction pour les voir dans l'annexe du document.
  • Pas un retrait. Un document chiffré qui ne déclare aucune partie de PDF/A n'est pas archivable par conception : rien de ce que vous avez demandé n'est perdu, donc aucun code, seulement une note dans les diagnostics.
Vérifiez errorCodes avant de transmettre un document

Un document dont la conformité a été retirée est quand même livré. Si vos utilisateurs comptent sur PDF/A ou PDF/UA, traitez CONFORMANCE_WITHHELD dans les errorCodes de la réponse comme un échec dans votre intégration.