GetPDFUADiagnosticsA

PDF/UA & accessibilité

Description

Le A final indique le point d’entrée ANSI (char) de la DLL ; la surface ActiveX/COM n’expose que la forme Unicode. Le comportement est identique à celui de GetPDFUADiagnostics et les arguments de chaîne sont interprétés selon la page de codes SetAnsiMode actuelle

Renvoie une liste séparée par des sauts de ligne des problèmes potentiels de conformité PDF/UA-1 (ISO 14289-1) trouvés dans le document actuel. Chaque ligne contient un code, deux-points et une description lisible. Renvoie une chaîne vide si aucun problème n’est détecté

Syntaxe

Delphi

Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;

DLL

const char * DLGetPDFUADiagnosticsA(int InstanceID);

Codes de problème

PDF-VERSION-LOWLa version PDF du document (telle qu’inscrite dans l’en-tête du fichier) est inférieure à 1.7. PDF/UA-1 est défini par rapport à ISO 32000-1:2008 (PDF 1.7). Appelez SetPDFUAMode pour relever automatiquement la version à 1.7
MARKED-FALSEMarkInfo/Marked n’est pas défini sur true ; le document n’est pas un PDF balisé
LANG-MISSINGL'entrée /Lang du catalogue du document est absente ou vide ISO 14289-1 §7.3 exige une déclaration de langue naturelle
DISPLAYDOCTITLE-FALSEViewerPreferences/DisplayDocTitle n'est pas true. Exigé par ISO 14289-1 §7.1 afin que le titre du document soit affiché dans la barre de titre
DOCINFO-TITLE-MISSINGL’entrée /Title du dictionnaire d’informations manque ou est vide. PDF/UA-1 exige un titre afin que les technologies d’assistance l’annoncent à l’ouverture. Ce contrôle complète DISPLAYDOCTITLE-FALSE, qui vérifie son affichage ; celui-ci vérifie l’existence de la valeur. Appelez SetInformation avec la clé Title
XMP-NO-PDFUAIDLe flux de métadonnées XMP ne contient pas d'entrée pdfuaid:part Requise par ISO 14289-1 §7.2
ANNOT-NO-CONTENTS:NN annotations non exemptées, hors sous-types Widget, PrinterMark et TrapNet, n'ont pas d'entrée Contents. Exigé par ISO 14289-1 §7.18.1
EMBED-NO-AFR:NN fichiers incorporés ne possèdent pas d'entrée AFRelationship dans leur dictionnaire de spécification de fichier. Exigé par ISO 14289-1 §7.11
FIGURE-NO-ALT:NN éléments Figure ou Formula n'ont pas de texte Alt. ISO 14289-1 §7.5 et ISO 32000-1 §14.9.3 exigent une description de remplacement des figures et formules
HEADING-LEVEL-SKIP:NN sauts de niveau de titre ont été détectés dans l’ordre du document (par exemple un H1 immédiatement suivi d’un H3, sans H2). ISO 14289-1 §7.1 et le critère de réussite 1.3.1 de WCAG 2.x exigent une imbrication des titres sans niveau omis
STRUCT-UNCLOSED:NN éléments de structure restent ouverts parce qu'EndTag n'a pas été appelé le bon nombre de fois. Ils manqueront à la racine de l'arborescence de structure
TABLE-TH-NO-SCOPE:NN éléments de structure TH (cellule d’en-tête de tableau) ne possèdent aucun attribut Scope. ISO 32000-1 §14.8.4.3.4 Table 337 définit Scope (Row, Column ou Both) comme l’attribut indiquant les cellules de données auxquelles chaque cellule d’en-tête s’applique. Sans lui, les technologies d’assistance ne peuvent pas associer fiablement les en-têtes aux données des tableaux complexes ou à plusieurs niveaux d’en-tête. Appelez SetStructElemScope (ou AddTagAttribute avec Owner='Table', Name='Scope') immédiatement après avoir balisé chaque élément TH
FORM-NO-TOOLTIP:NN champs interactifs Widget n’ont pas d’entrée TU, info-bulle et nom accessible. ISO 14289-1 §7.18.4 exige TU afin que les technologies d’assistance annoncent l’objet du champ. /TU est le nom lu à voix haute, distinct de /T, nom partiel utilisé par le programme. Définissez TU lors de la création ou du chargement
LIST-STRUCT:NN éléments de structure LI ou LBody se trouvent hors de leur parent requis. ISO 32000-1 §14.8.4.4 exige que LI soit enfant direct de L et LBody enfant direct de LI. Une imbrication incorrecte empêche la navigation dans les listes. Vérifiez la séquence BeginTag / EndTag de tous les éléments concernés
ROLEMAP-UNMAPPED:NN types personnalisés apparaissent sans entrée dans /RoleMap. ISO 14289-1 §7.1 et ISO 32000-1 §14.7.3 exigent que chaque type non standard corresponde à un type PDF standard afin que les technologies d’assistance sachent le traiter. Appelez AddRoleMap pour chacun avant l’enregistrement ; la description énumère les noms non associés
SUSPECTS-TRUEMarkInfo/Suspects vaut true. ISO 14289-1 §7.1 exige que les fichiers revendiquant la conformité PDF/UA aient une valeur Suspects false. Une valeur true signale des erreurs connues dans le balisage. Appelez SetMarkInfo une fois le document entièrement balisé pour rétablir Suspects sur false
ROLEMAP-STANDARD-REMAP:NN types de structure standard apparaissent comme clé « custom » dans /RoleMap et seraient réassociés à l’enregistrement. ISO 14289-1 §7.1 interdit la réassociation des balises standard d’ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table, etc.). La ligne de détail les énumère. Supprimez les appels AddRoleMap concernés
DC-TITLE-MISSINGLe dc:title Dublin Core du flux XMP manque ou est vide. ISO 14289-1 §7.1 exige un dc:title qui identifie clairement le document. Ce contrôle est distinct de DOCINFO-TITLE-MISSING, qui examine seulement /Info /Title. Appelez SetPDFUAMode pour copier le titre /Info dans le paquet XMP
TRAPNET-ANNOT:NN annotations TrapNet ont été trouvées. ISO 14289-1 §7.18.2 interdit explicitement TrapNet dans PDF/UA-1. Supprimez-les avant l'enregistrement
ANNOT-PAGE-NO-TABS-S:NN pages comportent au moins une annotation, mais leur dictionnaire ne définit pas /Tabs /S. ISO 14289-1 §7.18.3 exige que l’ordre de tabulation de ces pages suive l’arbre de structure, signalé par /Tabs /S. Définissez /Tabs /S dans le dictionnaire de chaque page contenant des annotations
ENCRYPT-NO-ACCESSLe document est chiffré et PDFUAMode est actif, mais le bit 10 de la clé d’autorisation /P du chiffrement (masque $200, extraction d’accessibilité) est désactivé. ISO 14289-1 §7.16 exige que tout fichier conforme chiffré autorise cette extraction. Lorsque PDFUAMode est défini avant l’appel à Encrypt, le bit est automatiquement activé. Dans l’ordre inverse, le dictionnaire de chiffrement existe déjà avec l’ancienne valeur /P — rappelez Encrypt pour réémettre le dictionnaire
FIRST-HEADING-NOT-H1Le premier élément de titre dans l’ordre du document n’est pas H1 (la sentinelle H fortement structurée compte aussi comme niveau 1). ISO 14289-1 §7.4.2 exige que le premier titre d’un document non fortement structuré soit H1. La ligne de détail désigne le niveau fautif
WIDGET-NO-STRUCTPARENT:NN annotations Widget n’ont pas d’entrée /StructParent. ISO 14289-1 §7.18.4 exige leur imbrication dans une balise Form ; sans /StructParent, elles sont inaccessibles depuis l’arbre. La ligne de détail indique le nombre. Ce contrôle est partiel — la vérification complète du parent /S comme Form n’est pas encore implémentée
LIST-NO-NUMBERING:NN éléments de structure L (liste) ne possèdent pas l’attribut ListNumbering. ISO 14289-1 §7.6 exige que chaque balise L déclare son style de numérotation par cet attribut (les valeurs valides selon ISO 32000-1 Table 347 sont None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Appelez SetStructElemListNumbering après l’ouverture de chaque balise L
MULTIPLE-H-CHILDREN:NN nœuds de structure contiennent plusieurs enfants H directs. ISO 14289-1 §7.4.4 l'interdit — divisez la section parente ou remplacez H par une séquence H1..H6

Valeur de retour

Une chaîne de descriptions de problèmes séparées par des sauts de ligne, ou une chaîne vide si aucun problème de conformité n'est détecté

Remarques

Cette fonction est une aide au diagnostic destinée aux développeurs. Elle contrôle l’état actuel du document en mémoire et signale les problèmes pouvant entraîner des échecs de validation PDF/UA-1. Appelez-la après le chargement ou la construction pour détecter les problèmes avant l’enregistrement

Lorsque SetPDFUAMode est actif et que le document est enregistré, plusieurs problèmes (ANNOT-NO-CONTENTS, EMBED-NO-AFR) sont corrigés automatiquement. GetPDFUADiagnostics indique l’état avant enregistrement ; les problèmes qui seront corrigés restent donc listés s’ils sont présents auparavant

Cette fonction ne modifie pas le document

Exemple

var
  Diag: WideString;
begin
  PDFlib.SetPDFUAMode('en-US');
  // ... build document
  Diag := PDFlib.GetPDFUADiagnostics;
  if Diag <> '' then
    ShowMessage('PDF/UA issues found:'#10 + Diag);
end;

Voir aussi

SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship