THotPDF.AddStructureElement + PDF/UA accessibility attributes

THotPDF tagged-PDF surface (v2.119.36 / v2.119.40 / v2.119.41)

 

AddXFAPacket  AcroForm-ondersteuning

THotPDF.AddStructureElement en Tagged-PDF-helpers

Deze pagina documenteert de huidige THotPDF-helpers voor de structuurboom van getagde PDF en PDF/UA. Code-identificatoren komen overeen met de publieke declaraties

Huidige Delphi-interface

function AddStructureElement(const Role: AnsiString; Parent: THPDFDictionaryObject; PageIndex: Integer = -1; MCID: Integer = -1): THPDFDictionaryObject; overload; function AddStructureElement(const Role: AnsiString; Parent: THPDFDictionaryObject; PageIndex: Integer; MCID: Integer; const AltText: AnsiString; const ActualText: AnsiString): THPDFDictionaryObject; overload; function AddStructureElement(const Role: AnsiString; Parent: THPDFDictionaryObject; PageIndex: Integer; MCID: Integer; const AltText: AnsiString; const ActualText: AnsiString; const IDStr: AnsiString): THPDFDictionaryObject; overload; function AddStructureElement(T: THPDFStandardStructureType; Parent: THPDFDictionaryObject; PageIndex: Integer = -1; MCID: Integer = -1): THPDFDictionaryObject; overload; procedure SetStructureElementLanguage(Elem: THPDFDictionaryObject; const Lang: AnsiString); procedure SetStructureElementExpansionText(Elem: THPDFDictionaryObject; const ExpansionText: AnsiString); procedure SetStructureElementTitle(Elem: THPDFDictionaryObject; const Title: AnsiString); procedure AddStructRoleMap(const SourceRole: AnsiString; const TargetRole: AnsiString); function BeginTaggedContent(const Role: AnsiString; Parent: THPDFDictionaryObject; const Lang: AnsiString = ''; const Alt: AnsiString = ''; const ActualText: AnsiString = ''; const ExpansionText: AnsiString = ''): THPDFDictionaryObject; procedure EndTaggedContent; function EmitTaggedHeading(Level: Integer; Parent: THPDFDictionaryObject; X, Y: Single; const Text: WideString): THPDFDictionaryObject; function BeginTaggedList(Parent: THPDFDictionaryObject; const NumberingStyle: AnsiString = 'None'): THPDFDictionaryObject; function EmitTaggedListItem(ListElem: THPDFDictionaryObject; LblX, LblY: Single; const LabelText: WideString; BodyX, BodyY: Single; const BodyText: WideString): THPDFDictionaryObject; function BeginTaggedTable(Parent: THPDFDictionaryObject): THPDFDictionaryObject; function AddTaggedTableRow(TableElem: THPDFDictionaryObject): THPDFDictionaryObject; function EmitTaggedTableHeader(TRElem: THPDFDictionaryObject; X, Y: Single; const Text: WideString; const Scope: AnsiString): THPDFDictionaryObject; function EmitTaggedTableCell(TRElem: THPDFDictionaryObject; X, Y: Single; const Text: WideString): THPDFDictionaryObject; function BeginTaggedFigure(Parent: THPDFDictionaryObject; const AltText: AnsiString; const BBox: array of Single): THPDFDictionaryObject; procedure EndTaggedFigure; procedure RegisterAnnotForStructure(AnnotDict: THPDFDictionaryObject; StructElem: THPDFDictionaryObject); function StandardStructureTypeToName(T: THPDFStandardStructureType): AnsiString; function IsStandardStructureType(const Name: AnsiString): Boolean;

Structuurelementen maken

AddStructureElement maakt een /StructElem-woordenlijst en voegt die toe als kind van Parent (geef nil door om onder de wortel van de structuurboom te hangen). PageIndex koppelt het element via /Pg aan zijn pagina; geef een negatieve waarde door om dat weg te laten. MCID koppelt, wanneer nul of hoger, een marked-content-reeks op de pagina aan het element en registreert die in de /ParentTree van het document. De overload met zes argumenten voegt /Alt (alternatieve beschrijving die wordt voorgelezen voor niet-tekstinhoud zoals figuren en formules) en /ActualText (vervangende tekst die kopiëren/plakken teruggeeft voor moeilijk te extraheren glyphs) toe. De overload met zeven argumenten schrijft bovendien een documentunieke /ID, zodat andere structuurelementen het element op ID kunnen aanspreken (ISO 32000-1 §14.7.2)

Standaardstructuurtypen (Table 333)

De enum-overload THPDFStandardStructureType is het typeveilige ingangspunt: de uitgegeven /S-rolnaam is gegarandeerd een van de standaardstructuurtypen uit ISO 32000-1 §14.8.4 Table 333, wat het risico op typfouten en hoofdlettergevoeligheid van de open-tekenreeks-overload wegneemt. De enum groepeert de namen naar hun specificatiefamilie:

Let op de kleine letters in sstLbl / sstLBody: de letterlijke PDF-rolnamen zijn Lbl en LBody. Aangepaste rolnamen kunnen nog steeds via de AnsiString-overload worden doorgegeven en met AddStructRoleMap aan een standaardrol worden toegewezen

Voorbeeld

PDF.PDFUACompliance := pdfuaPDFUA1; PDF.BeginDoc; Doc := PDF.AddStructureElement(sstDocument, nil); H1 := PDF.AddStructureElement(sstH1, Doc); PDF.SetStructureElementLanguage(Doc, 'en-US'); PDF.SetStructureElementTitle(H1, 'Annual Report'); // Alt / ActualText ride on the AnsiString overload; reuse the // spec-prescribed role name via StandardStructureTypeToName Fig := PDF.AddStructureElement(StandardStructureTypeToName(sstFigure), Doc, 0, -1, 'Sales by quarter: Q1 4.2M, Q2 5.1M, Q3 5.8M, Q4 6.4M', '');

Structuurattributen en roltoewijzing

SetStructureElementLanguage schrijft een BCP-47 /Lang-overschrijving, SetStructureElementExpansionText schrijft de /E-expansietekst, SetStructureElementTitle schrijft de mensleesbare /T-titel en AddStructRoleMap wijst aangepaste structuurrollen terug toe aan standaard-PDF-rollen. StandardStructureTypeToName geeft de PDF-rolnaam voor een THPDFStandardStructureType-waarde terug en IsStandardStructureType controleert of een rolnaam een van de standaardrollen is

Hoog niveau getagde helpers

EmitTaggedHeading, BeginTaggedList, EmitTaggedListItem, BeginTaggedTable, AddTaggedTableRow, EmitTaggedTableHeader, EmitTaggedTableCell, BeginTaggedFigure, EndTaggedFigure en RegisterAnnotForStructure dekken gangbare PDF/UA-koppelingen voor koppen, lijsten, tabellen, figuren en annotaties zonder dat aanroepers MCID's handmatig hoeven te beheren

Typische workflow

Schakel getagde uitvoer of PDFUACompliance in, maak het wortelstructuurelement, gebruik de helperfamilie om semantische inhoud uit te geven en sluit elke begonnen getagde-inhouds- of figuurreeks af vóór EndDoc

Veilig authoreren over paginacontinuaties

BeginTaggedContentForStructure en AppendStructureMarkedContent koppelen pagina-locale marked-content-verwijzingen aan één bestaand logisch structuurelement over paginacontinuaties heen

Automatische PDF/UA-structuur uit layoutbomen past hetzelfde model toe op declaratieve koppen, lijsten, tabellen, figuren en artifacts