GetPDFUADiagnosticsA

PDF/UA & Accessibility

Description

Det avslutande A:et betecknar ANSI (char)-DLL-ingångspunkten; ActiveX/COM-ytan exponerar bara Unicode-formen. Beteendet är identiskt med GetPDFUADiagnostics och strängargument tolkas med aktuell SetAnsiMode-kod sida

Returnerar en radseparerad lista med tänkbara PDF/UA-1-problem (ISO 14289-1) som hittats i det aktuella dokumentet. Varje rad innehåller en problemkod följt av ett kolon och en läsbar beskrivning. Returnerar en tom sträng när inga problem upptäcks

Syntax

Delphi

Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;

DLL

const char * DLGetPDFUADiagnosticsA(int InstanceID);

Issue codes

PDF-VERSION-LOWDokumentets PDF-version (som den är noterad i filheadern) är under 1.7. PDF/UA-1 är definierad mot ISO 32000-1:2008 (PDF 1.7). Anropa SetPDFUAMode för att automatiskt höja versionen till 1.7
MARKED-FALSEMarkInfo/Marked är inte satt till true; dokumentet är inte en taggad PDF
LANG-MISSINGDokumentets Catalog /Lang-post saknas eller är tom. ISO 14289-1 §7.3 kräver en deklaration av naturligt språk
DISPLAYDOCTITLE-FALSEViewerPreferences/DisplayDocTitle är inte true. Krävs av ISO 14289-1 §7.1 så att dokumenttiteln visas i namnlisten
DOCINFO-TITLE-MISSINGPosten /Title i dokumentets informationsdictionary saknas eller är tom. PDF/UA-1 kräver en dokumenttitel så att hjälpmedelsteknik kan annonsera den när dokumentet öppnas. Den här kontrollen kompletterar DISPLAYDOCTITLE-FALSE: den kontrollen verifierar att titeln syns i visningsprogrammet; den här kontrollen verifierar att titelvärdet i sig finns. Anropa SetInformation med nyckeln Title för att sätta den
XMP-NO-PDFUAIDXMP-metadataströmmen innehåller ingen pdfuaid:part-post. Krävs av ISO 14289-1 §7.2
ANNOT-NO-CONTENTS:NN icke-undantagna annoteringar (exklusive Widget-, PrinterMark- och TrapNet-subtyper) saknar en Contents-post. Krävs av ISO 14289-1 §7.18.1
EMBED-NO-AFR:NN inbäddade filer saknar en AFRelationship-post i sin file specification-dictionary. Krävs av ISO 14289-1 §7.11
FIGURE-NO-ALT:NN Figure- eller Formula-strukturelement saknar Alt-text-värde. ISO 14289-1 §7.5 och ISO 32000-1 §14.9.3 kräver alternativa beskrivningar för både grafiska figurer och matematiska formler
HEADING-LEVEL-SKIP:NN rubriknivåhopp upptäcktes i dokumentordning (t.ex. ett H1 omedelbart följt av ett H3, vilket hoppar över H2). ISO 14289-1 §7.1 och WCAG 2.x framgångskriterium 1.3.1 kräver att rubriker nästlas utan gap
STRUCT-UNCLOSED:NN strukturelement är fortfarande öppna eftersom EndTag inte anropades rätt antal gånger. De här elementen saknas i strukturträdets rot
TABLE-TH-NO-SCOPE:NN TH-(tabellrubrikcell)-strukturelement saknar Scope-attribut. ISO 32000-1 §14.8.4.3.4 tabell 337 definierar Scope (Rad, Kolumn eller Båda) som attributet som beskriver vilka dataceller varje rubrikcell gäller för. Utan det kan hjälpmedelsteknik inte tillförlitligt para rubriker med dataceller i komplexa tabeller eller tabeller med flera rubriknivåer. Anropa SetStructElemScope (eller AddTagAttribute med Owner='Table', Name='Scope') omedelbart efter att varje TH-element taggats
FORM-NO-TOOLTIP:NN interaktiva formulärfält (Widget-annoteringar) saknar en TU-post (tooltip / tillgängligt namn). ISO 14289-1 §7.18.4 kräver att alla interaktiva formulärfält bär en TU-post så att hjälpmedelsteknik kan annonsera fältets syfte för användaren. /TU är det tillgängliga namn som skärmläsare läser upp; det skiljer sig från /T (det partiella fältnamn som används programmatiskt). Sätt TU-värdet när formulärfält skapas eller läses in
LIST-STRUCT:NN LI- eller LBody-strukturelement förekommer utanför sin krävda förälder. ISO 32000-1 §14.8.4.4 kräver att LI är ett direkt barn till L (lista) och att LBody är ett direkt barn till LI (listpost). Felaktig listnästling hindrar hjälpmedelsteknik från att navigera listor korrekt. Kontrollera BeginTag-/EndTag-anropssekvensen för alla listrelaterade element
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 är satt till true. ISO 14289-1 §7.1 kräver att filer som gör anspråk på PDF/UA-conformance har ett Suspects-värde på false. Ett true-värde markerar taggningen som känd för att innehålla fel. Anropa SetMarkInfo efter att dokumentet helt taggats för att återställa Suspects till 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-MISSINGXMP-metadataströmmens Dublin Core dc:title saknas eller är tom. ISO 14289-1 §7.1 kräver att Metadata-strömmen innehåller en dc:title-post som tydligt identifierar dokumentet. Denna kontroll är skild från DOCINFO-TITLE-MISSING, som bara inspekterar posten /Info /Title. Anropa SetPDFUAMode för att kopiera /Info-titeln in i XMP-paketet
TRAPNET-ANNOT:NN TrapNet-annoteringar hittades på dokumentsidor. ISO 14289-1 §7.18.2 förbjuder uttryckligen TrapNet i PDF/UA-1-konforma filer. Ta bort de förseende annoteringarna innan du sparar
ANNOT-PAGE-NO-TABS-S:NN sidor bär en eller flera annoteringar men deras sid-dictionary sätter inte /Tabs /S. ISO 14289-1 §7.18.3 kräver att tabbordningen på sådana sidor följer strukturträdet, signalerat via /Tabs /S. Sätt /Tabs /S i sid-dictionaryn för varje sida som innehåller annoteringar
ENCRYPT-NO-ACCESSDokumentet är krypterat och PDFUAMode är aktivt, men bit 10 av krypteringens /P-behörighetsnyckel (mask $200, tillgänglighetsextraktion) är rensad. ISO 14289-1 §7.16 kräver att varje krypterad konform fil tillåter tillgänglighetsextraktion. Sätts PDFUAMode före Encrypt tvingas biten på automatiskt. Är anropsordningen omvänd ligger krypteringsdictionaryn redan på plats med det gamla /P-värdet — anropa Encrypt igen så att dictionaryn genereras på nytt
FIRST-HEADING-NOT-H1Det första rubrikelementet i dokumentordning är inte H1 (den starkt strukturerade H-senteninel räknas också som nivå 1). ISO 14289-1 §7.4.2 kräver att den första rubriktaggen i ett icke-starkt strukturerat dokument är H1. Detaljraden namnger den förseende nivån
WIDGET-NO-STRUCTPARENT:NN Widget-annoteringar saknar en /StructParent-post. ISO 14289-1 §7.18.4 kräver att Widget-annoteringar nästlas inuti en Form-strukturtagg; utan /StructParent kan Widgeten inte nås från strukturträdet alls. Detaljraden rapporterar antalet. Detta är en partiell kontroll — fullständig verifiering av att den upplösta förälderns /S är Form är ännu inte implementerad
LIST-NO-NUMBERING:NN L-(lista)-strukturelement saknar attributet ListNumbering. ISO 14289-1 §7.6 kräver att varje L-tagg deklarerar sin numreringsstil via detta attribut (giltiga värden enligt ISO 32000-1 tabell 347 är None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Anropa SetStructElemListNumbering efter att varje L-tagg öppnats
MULTIPLE-H-CHILDREN:NN strukturträdnoder innehåller mer än ett direkt H-(generisk rubrik)-barn. ISO 14289-1 §7.4.4 förbjuder det — dela upp föräldersektionen eller ersätt H-taggarna med numrerade H1..H6-sekvenser

Return value

En radseparerad sträng med problembeskrivningar, eller en tom sträng inga efterlevnadsproblem upptäcks

Remarks

Den här funktionen är tänkt som ett diagnosverktyg för utvecklare. Den kontrollerar dokumentets aktuella tillstånd i minnet och rapporterar problem som kan orsaka misslyckad PDF/UA-1-validering. Anropa den efter att ett dokument lästs in eller byggts för att hitta problemen innan du sparar

När SetPDFUAMode är aktivt och dokumentet sparas korrigeras flera problem (ANNOT-NO-CONTENTS, EMBED-NO-AFR) automatiskt under sparningen. GetPDFUADiagnostics rapporterar tillståndet före sparning; problem som auto-korrigeras vid sparning listas ändå om de finns före sparningen

Den här funktionen ändrar inte dokumentet

Example

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

See also

SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship