GetPDFUADiagnostics

PDF/UA & Accessibility

Popis

Vrací seznam možných problémů shody s PDF/UA-1 (ISO 14289-1) v aktuálním dokumentu, přičemž položky jsou oddělené novými řádky. Každý řádek obsahuje jeden kód problému, za ním dvojtečku a popis čitelný pro člověka. Pokud nejsou zjištěny žádné problémy, vrací prázdný řetězec

Syntaxe

Delphi

Function TPDFlib.GetPDFUADiagnostics: WideString;

ActiveX

Function PDFlib::GetPDFUADiagnostics() As String

DLL

const wchar_t * DLGetPDFUADiagnostics(int InstanceID);

Issue codes

PDF-VERSION-LOWVerze PDF dokumentu (zapsaná v hlavičce souboru) je nižší než 1.7. PDF/UA-1 se definuje vůči ISO 32000-1:2008 (PDF 1.7). Volání SetPDFUAMode verzi automaticky zvýší na 1.7
MARKED-FALSEMarkInfo/Marked není nastaveno na true; dokument není tagged PDF
LANG-MISSINGThe document catalog /Lang entry is absent or empty. ISO 14289-1 §7.3 requires a natural language declaration.
DISPLAYDOCTITLE-FALSEViewerPreferences/DisplayDocTitle is not true. Required by ISO 14289-1 §7.1 so the document title is shown in the title bar.
DOCINFO-TITLE-MISSINGPoložka /Title v informačním slovníku dokumentu chybí nebo je prázdná. PDF/UA-1 vyžaduje název dokumentu, aby ho asistivní technologie mohly oznámit při otevření dokumentu. Tato kontrola doplňuje DISPLAYDOCTITLE-FALSE: ta ověřuje, že se název zobrazí v prohlížeči; tato kontrola ověřuje samotnou existenci hodnoty názvu. Nastavte ji voláním SetInformation s klíčem Title
XMP-NO-PDFUAIDThe XMP metadata stream does not contain a pdfuaid:part entry. Required by ISO 14289-1 §7.2.
ANNOT-NO-CONTENTS:NN 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:NN embedded files are missing an AFRelationship entry in their file specification dictionary. Required by ISO 14289-1 §7.11.
FIGURE-NO-ALT:NN 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:NN 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:NN strukturálních prvků zůstává otevřených, protože EndTag nebyl zavolán správněkrát. Tyto prvky budou v kořenu stromu struktury chybět
TABLE-TH-NO-SCOPE:NN TH (table header cell) structure elements have no Scope attribute. ISO 32000-1 §14.8.4.3.4 Table 337 defines Scope (Row, Column, or Both) as the attribute that describes which data cells each header cell applies to. Without it, assistive technology cannot reliably associate headers with data cells in complex or multi-header tables. Call SetStructElemScope (or AddTagAttribute with Owner='Table', Name='Scope') immediately after tagging each TH element.
FORM-NO-TOOLTIP:NN interactive form fields (Widget annotations) are missing a TU (tooltip / accessible name) entry. ISO 14289-1 §7.18.4 requires all interactive form fields to carry a TU entry so assistive technology can announce the field's purpose to the user. /TU is the accessible name that screen readers read aloud; it is distinct from /T (the partial field name used programmatically). Set the TU value when creating or loading form fields.
LIST-STRUCT:NN LI or LBody structure elements appear outside their required parent. ISO 32000-1 §14.8.4.4 requires LI to be a direct child of L (list), and LBody to be a direct child of LI (list item). Malformed list nesting prevents assistive technology from navigating lists correctly. Check the BeginTag / EndTag call sequence for all list-related elements.
ROLEMAP-UNMAPPED:NN custom structure element types appear in the document but have no entry in the /RoleMap dictionary. ISO 14289-1 §7.1 and ISO 32000-1 §14.7.3 require that every non-standard structure type be mapped to a standard PDF type so assistive technology can determine how to handle the element. Call AddRoleMap for each custom type before saving. The issue description lists the unmapped type names.
SUSPECTS-TRUEMarkInfo/Suspects is set to true. ISO 14289-1 §7.1 requires files claiming PDF/UA conformance to have a Suspects value of false. A true value marks the tagging as known to contain errors. Call SetMarkInfo after the document is fully tagged to reset Suspects to false.
ROLEMAP-STANDARD-REMAP:NN standard structure types appear as the "custom" key in /RoleMap and would be remapped on save. ISO 14289-1 §7.1 forbids remapping standard tags defined in ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table, etc.). The detail line lists the offending standard tag names. Remove the affected AddRoleMap calls.
DC-TITLE-MISSINGPoložka Dublin Core dc:title ve streamu metadat XMP chybí nebo je prázdná. Norma ISO 14289-1 §7.1 vyžaduje, aby stream Metadata obsahoval položku dc:title, která jednoznačně identifikuje dokument. Tato kontrola je oddělená od DOCINFO-TITLE-MISSING, která kontroluje pouze položku /Info /Title. Zavolejte SetPDFUAMode pro zkopírování názvu /Info do paketu XMP
TRAPNET-ANNOT:NN TrapNet annotations were found on document pages. ISO 14289-1 §7.18.2 explicitly forbids TrapNet in PDF/UA-1 conforming files. Remove the offending annotations before saving.
ANNOT-PAGE-NO-TABS-S:NN pages carry one or more annotations but their page dictionary does not set /Tabs /S. ISO 14289-1 §7.18.3 requires tab order on such pages to follow the structure tree, signalled by /Tabs /S. Set /Tabs /S in the page dictionary for every page that contains annotations.
ENCRYPT-NO-ACCESSDokument je zašifrován a PDFUAMode je aktivní, ale bit 10 oprávnění v klíči šifrování /P (maska $200, extrakce pro přístupnost) je vypnutý. ISO 14289-1 §7.16 vyžaduje, aby každý šifrovaný soubor vyhovující standardu umožňoval extrakci pro přístupnost. Pokud je PDFUAMode nastaven před voláním Encrypt, bit se automaticky zapne. Pokud je pořadí volání opačné, slovník šifrování již obsahuje starou hodnotu /P — zavolejte Encrypt znovu, aby se slovník zapsal znovu
FIRST-HEADING-NOT-H1První nadpisový prvek v pořadí dokumentu není H1 (silně strukturovaný H sentinel se také počítá jako úroveň 1). ISO 14289-1 §7.4.2 vyžaduje, aby první nadpisový tag v dokumentu bez silné struktury byl H1. Podrobný řádek jmenuje problematickou úroveň
WIDGET-NO-STRUCTPARENT:NN anotací Widget postrádá položku /StructParent. ISO 14289-1 §7.18.4 vyžaduje, aby anotace Widget byly vnořené ve strukturním tagu Form; bez /StructParent se na Widget ze stromu struktury nedá vůbec dostat. Podrobný řádek uvádí počet. Jde o částečnou kontrolu — úplné ověření, že vyřešený rodič má /S Form, zatím implementováno není
LIST-NO-NUMBERING:NN strukturálních prvků L (seznam) postrádá atribut ListNumbering. ISO 14289-1 §7.6 vyžaduje, aby každý tag L deklaroval svůj styl číslování tímto atributem (platné hodnoty dle ISO 32000-1 Table 347 jsou None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Po otevření každého tagu L zavolejte SetStructElemListNumbering
MULTIPLE-H-CHILDREN:NN structure tree nodes contain more than one direct H (generic heading) child. ISO 14289-1 §7.4.4 forbids that — split the parent section or replace the H tags with numbered H1..H6 sequences.

Návratová hodnota

A newline-separated string of issue descriptions, or an empty string if no compliance issues are detected.

Poznámky

Tato funkce je určena jako diagnostická pomůcka pro vývojáře. Kontroluje aktuální stav dokumentu v paměti a hlásí problémy, které by mohly způsobit selhání validace PDF/UA-1. Zavolejte ji po načtení nebo vytvoření dokumentu, abyste problémy odhalili před uložením

Je-li aktivní SetPDFUAMode a dokument se uloží, některé závady (ANNOT-NO-CONTENTS, EMBED-NO-AFR) se při ukládání automaticky opraví. GetPDFUADiagnostics hlásí stav před uložením; závady, které se při ukládání opraví automaticky, se před uložením stále vypíšou, jsou-li přítomné

Tato funkce dokument nemění

Příklad

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

Viz také

SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship