GetPDFUADiagnosticsA
PDF/UA & Accessibility
Beschrijving
Het achtervoegsel A duidt het ANSI-toegangspunt (char) van de DLL aan; het ActiveX/COM-oppervlak stelt alleen de Unicode-vorm beschikbaar. Het gedrag is identiek aan GetPDFUADiagnostics en tekenreeksargumenten worden geïnterpreteerd met behulp van de huidige SetAnsiMode-codetabel
Retourneert een door regeleinden gescheiden lijst met mogelijke PDF/UA-1 (ISO 14289-1)-nalevingsproblemen die in het huidige document zijn gevonden. Elke regel bevat één probleemcode, gevolgd door een dubbele punt en een voor mensen leesbare beschrijving. Retourneert een lege tekenreeks wanneer geen problemen worden gedetecteerd
Syntaxis
Delphi
Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;
DLL
const char * DLGetPDFUADiagnosticsA(int InstanceID);
Issue codes
| PDF-VERSION-LOW | De PDF-versie van het document (zoals vastgelegd in de bestandsheader) is lager dan 1.7. PDF/UA-1 is gedefinieerd tegen ISO 32000-1:2008 (PDF 1.7). Roep SetPDFUAMode aan om de versie automatisch naar 1.7 te verhogen |
|---|---|
| MARKED-FALSE | MarkInfo/Marked staat niet op true; het document is geen tagged PDF |
| LANG-MISSING | De /Lang-entry van de documentcatalogus ontbreekt of is leeg. ISO 14289-1 §7.3 vereist een natuurlijke-taalaanduiding |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle staat niet op true. Vereist door ISO 14289-1 §7.1 zodat de documenttitel in de titelbalk wordt getoond |
| DOCINFO-TITLE-MISSING | De /Title-entry van de document information dictionary ontbreekt of is leeg. PDF/UA-1 vereist een documenttitel zodat hulptechnologie die kan aankondigen wanneer het document wordt geopend. Deze controle vult DISPLAYDOCTITLE-FALSE aan: die controle verifieert dat de titel in de viewer wordt getoond; deze controle verifieert dat de titelwaarde zelf bestaat. Roep SetInformation aan met de sleutel Title om die te zetten |
| XMP-NO-PDFUAID | De XMP-metadatastream bevat geen pdfuaid:part-entry. Vereist door ISO 14289-1 §7.2 |
| ANNOT-NO-CONTENTS:N | N non-exempt annotations (excluding Widget, PrinterMark, and TrapNet subtypes) are missing a Contents entry. Required by ISO 14289-1 §7.18.1. |
| EMBED-NO-AFR:N | N embedded files are missing an AFRelationship entry in their file specification dictionary. Required by ISO 14289-1 §7.11. |
| FIGURE-NO-ALT:N | N Figure or Formula structure elements have no Alt text value. ISO 14289-1 §7.5 and ISO 32000-1 §14.9.3 require alternative descriptions for both graphical figures and mathematical formulas. |
| HEADING-LEVEL-SKIP:N | N heading level jumps were detected in document order (e.g. an H1 immediately followed by an H3, skipping H2). ISO 14289-1 §7.1 and WCAG 2.x Success Criterion 1.3.1 require headings to nest without gaps. |
| STRUCT-UNCLOSED:N | Er zijn nog N structuurelementen open omdat EndTag niet het juiste aantal keren is aangeroepen. Deze elementen ontbreken in de wortel van de structuurboom |
| TABLE-TH-NO-SCOPE:N | N TH-(tabelheadercel-)structuurelementen hebben geen Scope-attribuut. ISO 32000-1 §14.8.4.3.4 Table 337 definieert Scope (Row, Column of Both) als het attribuut dat beschrijft op welke datacellen elke headercel van toepassing is. Zonder die kunnen hulptechnologieën headers in complexe tabellen of tabellen met meerdere headers niet betrouwbaar aan datacellen koppelen. Roep SetStructElemScope aan (of AddTagAttribute met Owner='Table', Name='Scope') direct na het taggen van elke TH-cel |
| FORM-NO-TOOLTIP:N | Bij N interactieve formuliervelden (Widget-annotaties) ontbreekt een TU-(tooltip/toegankelijke naam-)entry. ISO 14289-1 §7.18.4 vereist dat alle interactieve formuliervelden een TU-entry dragen zodat hulptechnologie het doel van het veld aan de gebruiker kan aankondigen. /TU is de toegankelijke naam die screenreaders voorlezen; die is niet hetzelfde als /T (de programmatisch gebruikte partiele veldnaam). Zet de TU-waarde bij het aanmaken of laden van formuliervelden |
| LIST-STRUCT:N | N LI- of LBody-structuurelementen staan buiten hun vereiste parent. ISO 32000-1 §14.8.4.4 vereist dat LI een direct child van L (list) is en LBody een direct child van LI (list item). misvormde lijstnesting verhindert dat hulptechnologie lijsten correct doorloopt. Controleer de BeginTag-/EndTag-aanroepvolgorde voor alle lijstgerelateerde elementen |
| ROLEMAP-UNMAPPED:N | N custom structuurelementtypen komen in het document voor maar hebben geen entry in de /RoleMap-woordenboek. ISO 14289-1 §7.1 en ISO 32000-1 §14.7.3 vereisen dat elk niet-standaard structuurtype naar een standaard PDF-type wordt gemapt, zodat hulptechnologie kan bepalen hoe het element moet worden behandeld. Roep AddRoleMap aan voor elk custom type vóór het opslaan. De bevindingsomschrijving noemt de niet-gemapte typenamen |
| SUSPECTS-TRUE | MarkInfo/Suspects staat op true. ISO 14289-1 §7.1 vereist dat bestanden die PDF/UA-conformiteit claimen een Suspects-waarde false hebben. De waarde true markeert de tagging als bekend foutief. Roep SetMarkInfo aan nadat het document volledig is getagd om Suspects terug op false te zetten |
| ROLEMAP-STANDARD-REMAP:N | N standaardstructuurtypen komen als "custom"-sleutel in /RoleMap voor en zouden bij het opslaan opnieuw worden gemapt. ISO 14289-1 §7.1 verbiedt het remappen van standaardtags gedefinieerd in ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table, enz.). De detailregel noemt de overtredende standaardtagnamen. Verwijder de betreffende AddRoleMap-aanroepen |
| DC-TITLE-MISSING | De Dublin Core dc:title van de XMP-metadatastroom ontbreekt of is leeg. ISO 14289-1 §7.1 vereist dat de Metadata-stroom een vermelding dc:title bevat die het document duidelijk identificeert. Deze controle staat los van DOCINFO-TITLE-MISSING, dat alleen de vermelding /Info /Title controleert. Roep SetPDFUAMode aan om de titel uit /Info naar het XMP-pakket te kopiëren |
| TRAPNET-ANNOT:N | Er zijn N TrapNet-annotaties gevonden op documentpagina's. ISO 14289-1 §7.18.2 verbiedt TrapNet expliciet in PDF/UA-1-conformerende bestanden. Verwijder de overtredende annotaties vóór het opslaan |
| ANNOT-PAGE-NO-TABS-S:N | N pagina's dragen een of meer annotaties maar hun paginawoordenboek zet /Tabs /S niet. ISO 14289-1 §7.18.3 vereist dat de tabvolgorde op zulke pagina's de structuurboom volgt, gesignaleerd door /Tabs /S. Zet /Tabs /S in het paginawoordenboek van elke pagina met annotaties |
| ENCRYPT-NO-ACCESS | Het document is versleuteld en PDFUAMode is actief, maar bit 10 van de machtigingssleutel voor versleuteling /P (masker $200, extractie voor toegankelijkheid) is uitgeschakeld. ISO 14289-1 §7.16 vereist dat elk versleuteld PDF-bestand dat aan de norm voldoet extractie voor toegankelijkheid toestaat. Wanneer PDFUAMode wordt ingesteld voordat Encrypt wordt aangeroepen, wordt de bit automatisch ingeschakeld. Als de aanroepvolgorde omgekeerd is, is de encryptiedictionary al aanwezig met de oude waarde van /P — roep Encrypt opnieuw aan zodat de dictionary opnieuw wordt uitgeschreven |
| FIRST-HEADING-NOT-H1 | Het eerste heading-element in documentvolgorde is geen H1 (de H-sentinel voor sterk gestructureerde documenten telt ook als niveau 1). ISO 14289-1 §7.4.2 vereist dat de eerste heading-tag in een niet sterk gestructureerd document H1 is. De detailregel noemt het overtredende niveau |
| WIDGET-NO-STRUCTPARENT:N | N Widget-annotaties missen een /StructParent-entry. ISO 14289-1 §7.18.4 vereist dat Widget-annotaties genest zijn binnen een Form-structuurtag; zonder /StructParent is de Widget vanuit de structuurboom helemaal niet te bereiken. De detailregel rapporteert de telling. Dit is een partiele controle — volledige verificatie dat de geresolveerde parent /S Form is, is nog niet geïmplementeerd |
| LIST-NO-NUMBERING:N | N L (list)-structuurelementen missen het attribuut ListNumbering. ISO 14289-1 §7.6 vereist dat elke L-tag zijn nummeringsstijl via dit attribuut declareert (geldige waarden volgens ISO 32000-1 Table 347 zijn None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Roep SetStructElemListNumbering aan na het openen van elke L-tag |
| MULTIPLE-H-CHILDREN:N | N structuurboomknopen bevatten meer dan één direct H-(algemene kop-)child. ISO 14289-1 §7.4.4 verbiedt dat — splits de bovenliggende sectie of vervang de H-tags door genummerde H1..H6-reeksen |
Retourwaarde
A newline-separated string of issue descriptions, or an empty string if no compliance issues are detected.
Remarks
Deze functie is bedoeld als diagnostisch hulpmiddel voor ontwikkelaars. Ze controleert de huidige status van het document in het geheugen en rapporteert problemen die tot validatiefouten voor PDF/UA-1 kunnen leiden. Roep de functie aan nadat je een document hebt geladen of opgebouwd om problemen vóór het opslaan te identificeren
Wanneer SetPDFUAMode actief is en het document wordt opgeslagen, worden verschillende bevindingen (ANNOT-NO-CONTENTS, EMBED-NO-AFR) tijdens het opslaan automatisch gecorrigeerd. GetPDFUADiagnostics rapporteert de status vóór het opslaan; bevindingen die bij het opslaan automatisch worden gecorrigeerd blijven vermeld zolang ze vóór het opslaan aanwezig zijn
Deze functie wijzigt het document niet
Voorbeeld
var
Diag: WideString;
begin
PDFlib.SetPDFUAMode('en-US');
// ... build document
Diag := PDFlib.GetPDFUADiagnostics;
if Diag <> '' then
ShowMessage('PDF/UA issues found:'#10 + Diag);
end;Zie ook
SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship