Aller au contenu

Mise en correspondance avec la spécification PDF/UA-2 (ISO 14289-2)

Cette page met en correspondance les fonctionnalités de NextPDF Core avec les dispositions de la norme ISO 14289-2 (PDF/UA-2). Elle précise les dispositions que la bibliothèque aide l’auteur à satisfaire et celles qui sont explicitement hors périmètre. Ce n’est pas une déclaration de conformité. La conformité d’un fichier dépend du contenu fourni par l’auteur, du balisage source et d’une validation au moyen d’un vérificateur PDF/UA externe.

Fenêtre de terminal
composer require nextpdf/core

La norme PDF/UA-2 (ISO 14289-2) définit les exigences applicables aux PDF accessibles. Ces exigences s’appuient sur les fonctions de structure logique de ISO 32000-2 §14.7 et sur les entrées de prise en charge de l’accessibilité de ISO 32000-2 §14.9. Un fichier conforme s’identifie au moyen du schéma d’identification de ISO 14289-2 §5. Un fichier conforme contient une arborescence de structure dont la racine possède un unique élément Document (ISO 14289-2 §8.2.5.2). Un fichier conforme utilise des types de structure standard, de sorte que la technologie d’assistance puisse résoudre chaque balise vers un rôle connu.

NextPDF fournit les primitives de création nécessaires à ce modèle : construction de l’arborescence de structure, mappage des rôles standard, balisage du contenu marqué à partir du HTML sémantique et attributs de langue BCP-47. NextPDF ne déduit pas la sémantique absente du contenu source. NextPDF n’exécute aucun vérificateur de conformité. Le modèle de la norme ISO 14289-2 §3.1, dans lequel la technologie d’assistance consomme l’arborescence de structure, est la cible de ces primitives. Le respect de chaque disposition par un document donné est déterminé par les données fournies par l’auteur et par un validateur externe.

Domaine de dispositionPoint d’entrée NextPDF
Activation du PDF balisé, mark-info et langue du catalogueDocument::enableTaggedPdf(string $lang, ?ConformancePolicy)
Langue naturelle au niveau du documentDocument::setLanguage(string $lang)
Arborescence de structure et racine Document uniqueStructureTree::createRoot(), StructureTree::addElement()
Vocabulaire des types de structure standardRoleMap::standard()
Langue, texte de remplacement et texte de substitution par élémentStructureElement : attributs du constructeur
Validation stricte BCP-47Bcp47Validator, ConformancePolicy::strictUa2()
Correction heuristique (optionnelle)AccessibilityAutoFixerRegistry
<?php
declare(strict_types=1);
use NextPDF\Core\Document;
$doc = Document::createStandalone();
$doc->enableTaggedPdf(lang: 'en');
$doc->setTitle('PDF/UA-2 structure demonstration');
$doc->addPage();
$doc->writeHtml('<h1>Title</h1><p>Body.</p><ul><li>Item</li></ul>');
$doc->save(__DIR__ . '/output/ua2.pdf');
// Then validate with an external checker. NextPDF does not assert
// conformance on your behalf:
// verapdf --flavour ua2 output/ua2.pdf

Consulte l’exemple de production du module Accessibilité pour le writer utilisant l’injection de dépendances, avec validation stricte BCP-47, journalisation consultative et gestion des erreurs. Le même câblage s’applique à un flux de création PDF/UA-2. Le seul ajout est l’étape de validation externe post-génération. Cette étape est requise pour une déclaration de conformité et relève de la responsabilité de l’appelant.

  • Un document qui active le PDF balisé mais n’attache aucun descendant de structure n’annonce volontairement pas le bloc d’identification PDF/UA-2 (ISO 14289-2 §5). Une arborescence de structure vide est rejetée par les validateurs.
  • Combiner enablePdfA() et enableTaggedPdf() fait que le discriminant de conformité à valeur unique prend la dernière valeur écrite, tout en conservant des effets de bord structurels additifs. Un avertissement CONFORMANCE_MODE_CLOBBERED rend cela observable.
  • ISO 14289-2 §7.2.2 autorise un document conforme à revendiquer également la conformité à des réglementations d’accessibilité plus larges. NextPDF émet uniquement le schéma d’identification PDF/UA-2 et n’émet pas d’autres métadonnées de revendication réglementaire.

Correspondance des dispositions et non-couverture explicite

Section intitulée « Correspondance des dispositions et non-couverture explicite »
Domaine de disposition (ISO 14289-2 / ISO 32000-2)Prise en charge NextPDFNotes
Schéma d’identification PDF/UA-2 (ISO 14289-2 §5)Pris en chargeÉmis uniquement lorsque l’arborescence de structure a des descendants.
Élément Document unique sous la racine de l’arborescence de structure (ISO 14289-2 §8.2.5.2 ; ISO 32000-2 §14.7.2)Pris en chargecreateRoot() impose un unique Document racine.
Types de structure standard et mappage des rôles (ISO 32000-2 §14.7 ; Well-Tagged PDF §8.2.5.1)Pris en chargeRoleMap::standard() ainsi que l’espace de noms PDF 2.0.
Séquences de contenu marqué et arbre parent (ISO 32000-2 §14.7.2)Pris en chargeIdentifiants par page et continuation inter-pages.
Langue naturelle du catalogue et par élément (ISO 32000-2 §14.9 ; ISO 14289-2 §8.4.4)Pris en chargeBCP-47 ; le mode strict rejette les balises mal formées.
Porteurs de texte de remplacement et de substitution (ISO 32000-2 §14.9)Prend en charge le porteur ; le contenu est fourni par l’auteurLa bibliothèque ne génère pas de texte de remplacement.
Ordre de lecture logique (ISO 32000-2 §14.7)Prend en charge l’ordre source ; ne réordonne pasUn ordre de lecture corrigé relève de la responsabilité de l’auteur.
Association et portée des en-têtes de tableauHors périmètre au-delà du balisage HTMLNon inféré ; dépend du balisage source.
Justesse des niveaux de titre et plan du documentHors périmètreL’auteur doit fournir une hiérarchie de titres correcte.
Vérification PDF/UA-2 de bout en boutHors périmètreAucun vérificateur intégré ; validation externe requise.
Attestation ou certification de conformitéHors périmètreNon fournies par la bibliothèque.

Les fonctions d’arborescence de structure ajoutent une seule passe de sérialisation linéaire sur l’ensemble des éléments ; le coût vient surtout du pipeline HTML plutôt que de l’émission des balises. Le plafond performance_budget s’applique à un document sémantique multi-pages typique.

Les valeurs de langue et d’attributs d’accessibilité sont échappées via PdfStringEscaper avant leur insertion dans la syntaxe des objets PDF. La validation BCP-47 en mode strict restreint la surface d’entrée des balises de langue à la frontière de l’API. Traite le texte de remplacement et les titres fournis par l’auteur comme des sorties non fiables.

NextPDF émet une structure cohérente avec le modèle d’arborescence de structure PDF/UA-2 défini dans ISO 14289-2 et ISO 32000-2 §14.7. Il n’affirme pas qu’un document donné est conforme à PDF/UA-2. Valide avec un vérificateur PDF/UA (par exemple, veraPDF) ; la bibliothèque n’affirme pas la conformité à ta place. Le test de référence veraPDF UA-2 intégré est désactivé par un garde-fou lorsque le binaire veraPDF est absent ; aucun résultat positif de conformité n’est donc revendiqué ici. Les clauses citées sont paraphrasées, jamais reproduites textuellement ; les empreintes des fragments sont consignées dans docs/public/modules/core/_normative-evidence-a11y.md.

Une déclaration de conformité PDF/UA-2 requiert une sémantique fournie par l’auteur (texte de remplacement, hiérarchie de titres correcte, association des en-têtes de tableau, ordre de lecture voulu, classification du contenu décoratif) ainsi qu’une validation avec un vérificateur externe. Aucun de ces éléments n’est produit ni vérifié par la bibliothèque. Le runtime émet un avis Degraded / ComplianceRisk qui invite l’appelant à valider en externe avant la validation finale en production. La conformité est une propriété du document final et du processus de création, pas du seul appel à l’API.