THotPDF.AddStructureElement + PDF/UA accessibility attributes

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

 

AddXFAPacket  AcroForm Support

THotPDF.AddStructureElement in pomožne funkcije za Tagged PDF

Ta stran dokumentira trenutne pomožne funkcije THotPDF za Tagged PDF in drevesa strukture PDF/UA. Identifikatorji kode ustrezajo javnim deklaracijam

Trenutni vmesnik Delphi

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;

Ustvarjanje elementov strukture

AddStructureElement ustvari slovar /StructElem in ga doda kot otroka elementa Parent; podajte nil, da ga povežete pod koren drevesa strukture. PageIndex poveže element s stranjo prek /Pg, negativna vrednost pa to povezavo izpusti. MCID, kadar je nič ali več, poveže marked-content zaporedje na strani z elementom in ga registrira v dokumentnem /ParentTree. Overload s šestimi argumenti doda /Alt za alternativni opis in /ActualText za nadomestno besedilo pri kopiranju. Overload s sedmimi argumenti zapiše tudi v dokumentu enoličen /ID

Standardni tipi strukture (Table 333)

Overload s THPDFStandardStructureType je type-safe vstopna točka: zapisana vloga /S je vedno eden od standardnih tipov strukture iz ISO 32000-1 §14.8.4 Table 333, kar zmanjša tveganje tipkarskih napak ali razlik v velikih in malih črkah pri odprtem besedilnem imenu role

Bodite pozorni na male črke v sstLbl / sstLBody: dejanski imeni PDF vlog sta Lbl in LBody. Prilagojena imena vlog je še vedno mogoče podati prek overload AnsiString in jih preslikati nazaj na standardno vlogo s AddStructRoleMap

Primer

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', '');

Atributi strukture in preslikava vlog

SetStructureElementLanguage zapiše BCP-47 override za /Lang, SetStructureElementExpansionText zapiše razširitveno besedilo /E, SetStructureElementTitle zapiše berljiv naslov /T, AddStructRoleMap pa preslika prilagojene strukturne vloge nazaj na standardne PDF vloge. StandardStructureTypeToName vrne ime PDF vloge za vrednost THPDFStandardStructureType, IsStandardStructureType pa preveri, ali je ime vloge standardno

Visokonivojske pomožne funkcije za tagged vsebino

EmitTaggedHeading, BeginTaggedList, EmitTaggedListItem, BeginTaggedTable, AddTaggedTableRow, EmitTaggedTableHeader, EmitTaggedTableCell, BeginTaggedFigure, EndTaggedFigure in RegisterAnnotForStructure pokrivajo običajno PDF/UA povezovanje naslovov, seznamov, tabel, figur in opomb brez ročnega upravljanja MCID

Tipičen potek dela

Vklopite tagged output ali PDFUACompliance, ustvarite korenski element strukture, uporabite družino pomožnih funkcij za semantično vsebino in zaprite vsako začeto tagged-content ali figure zaporedje pred EndDoc