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-LOW | Dokumentets 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-FALSE | MarkInfo/Marked är inte satt till true; dokumentet är inte en taggad PDF |
| LANG-MISSING | Dokumentets Catalog /Lang-post saknas eller är tom. ISO 14289-1 §7.3 kräver en deklaration av naturligt språk |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle är inte true. Krävs av ISO 14289-1 §7.1 så att dokumenttiteln visas i namnlisten |
| DOCINFO-TITLE-MISSING | Posten /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-PDFUAID | XMP-metadataströmmen innehåller ingen pdfuaid:part-post. Krävs av ISO 14289-1 §7.2 |
| ANNOT-NO-CONTENTS:N | N 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:N | N inbäddade filer saknar en AFRelationship-post i sin file specification-dictionary. Krävs av ISO 14289-1 §7.11 |
| FIGURE-NO-ALT:N | N 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:N | N 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:N | N 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:N | N 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:N | N 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:N | N 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:N | N 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-TRUE | MarkInfo/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:N | N 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-MISSING | XMP-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:N | N 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:N | N 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-ACCESS | Dokumentet ä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-H1 | Det 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:N | N 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:N | N 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:N | N 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