GetPDFUADiagnostics

PDF/UA & tillgänglighet

Beskrivning

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 TPDFlib.GetPDFUADiagnostics: WideString;

ActiveX

Function PDFlib::GetPDFUADiagnostics() As String

DLL

const wchar_t * DLGetPDFUADiagnostics(int InstanceID);

Parametrar

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 anpassade strukturelementtyper finns i dokumentet men saknar post i /RoleMap-ordboken. ISO 14289-1 §7.1 och ISO 32000-1 §14.7.3 kräver att varje icke-standardiserad strukturtyp mappas till en standardiserad PDF-typ så att hjälpmedel kan avgöra hur elementet ska hanteras. Anropa AddRoleMap för varje anpassad typ innan du sparar. Problemmeddelandet listar de omappade typnamnen.
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 standardiserade strukturtyper förekommer som "custom"-nyckel i /RoleMap och skulle mappas om vid sparning. ISO 14289-1 §7.1 förbjuder omappning av standardtaggar som definieras i ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table osv.). Detaljraden listar de felaktiga standardtaggnamnen. Ta bort de berörda AddRoleMap-anropen.
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

Returvärde

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

Anmärkningar

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

Exempel

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

Se även

SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship