THotPDF.AddStructureElement ir Tagged PDF pagalbinės funkcijos
Šiame puslapyje aprašomos dabartinės THotPDF pagalbinės funkcijos, skirtos Tagged PDF ir PDF/UA struktūros medžiams. Kodo identifikatoriai atitinka viešas deklaracijas
Dabartinė Delphi sąsaja
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;
Struktūros elementų kūrimas
AddStructureElement sukuria /StructElem žodyną ir prideda jį kaip Parent antrinį elementą; perduokite nil, kad prijungtumėte po struktūros medžio šaknimi. PageIndex susieja elementą su puslapiu per /Pg, o neigiama reikšmė šį ryšį praleidžia. MCID, kai yra nulis arba didesnis, susieja puslapio marked-content seką su elementu ir užregistruoja ją dokumento /ParentTree. Šešių argumentų overload prideda /Alt alternatyviam aprašui ir /ActualText pakaitiniam tekstui kopijuojant. Septynių argumentų overload taip pat įrašo dokumente unikalų /ID
Standartiniai struktūros tipai (Table 333)
Overload su THPDFStandardStructureType yra type-safe įėjimo taškas: įrašoma rolė /S visada yra vienas iš standartinių struktūros tipų pagal ISO 32000-1 §14.8.4 Table 333, todėl sumažėja rašybos klaidų ar raidžių registro neatitikimų rizika laisvo teksto role pavadinime
- Grupavimas:
sstDocument,sstPart,sstArt,sstSect,sstDiv,sstBlockQuote,sstCaption,sstTOC,sstTOCI,sstIndex,sstNonStruct,sstPrivate - Bloko lygmuo:
sstH,sstH1-sstH6,sstP,sstL,sstLI,sstLbl,sstLBody,sstTable,sstTR,sstTH,sstTD,sstTHead,sstTBody,sstTFoot - Inline lygmuo:
sstSpan,sstQuote,sstNote,sstReference,sstBibEntry,sstCode,sstLink,sstAnnot - Ruby ir Warichu:
sstRuby,sstRB,sstRT,sstRP,sstWarichu,sstWT,sstWP - Iliustracija:
sstFigure,sstFormula,sstForm
Atkreipkite dėmesį į mažąsias raides sstLbl / sstLBody: tikrieji PDF rolių pavadinimai yra Lbl ir LBody. Pasirinktiniai rolių pavadinimai vis dar gali būti perduodami per AnsiString overload ir susiejami atgal su standartine role naudojant AddStructRoleMap
Pavyzdys
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', '');
Struktūros atributai ir rolių susiejimas
SetStructureElementLanguage įrašo BCP-47 /Lang override, SetStructureElementExpansionText įrašo išplėtimo tekstą /E, SetStructureElementTitle įrašo skaitomą pavadinimą /T, o AddStructRoleMap susieja pasirinktines struktūros roles atgal su standartinėmis PDF rolėmis. StandardStructureTypeToName grąžina PDF rolės pavadinimą pagal THPDFStandardStructureType reikšmę, o IsStandardStructureType patikrina, ar rolės pavadinimas yra standartinis
Aukšto lygio pagalbinės funkcijos tagged turiniui
EmitTaggedHeading, BeginTaggedList, EmitTaggedListItem, BeginTaggedTable, AddTaggedTableRow, EmitTaggedTableHeader, EmitTaggedTableCell, BeginTaggedFigure, EndTaggedFigure ir RegisterAnnotForStructure apima įprastą PDF/UA antraščių, sąrašų, lentelių, figūrų ir anotacijų sujungimą, nereikalaujant rankiniu būdu valdyti MCID
Tipinė darbo eiga
Įjunkite tagged išvestį arba PDFUACompliance, sukurkite šakninį struktūros elementą, naudokite pagalbinių funkcijų rinkinį semantiniam turiniui ir uždarykite kiekvieną pradėtą tagged-content arba figure seką prieš EndDoc