THotPDF.AddStructureElement και βοηθητικές συναρτήσεις Tagged PDF
Αυτή η σελίδα τεκμηριώνει τις τρέχουσες βοηθητικές συναρτήσεις THotPDF για Tagged PDF και δέντρα δομής PDF/UA. Τα αναγνωριστικά κώδικα αντιστοιχούν στις δημόσιες δηλώσεις
Τρέχουσα επιφάνεια 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;
Δημιουργία στοιχείων δομής
Η AddStructureElement δημιουργεί ένα λεξικό /StructElem και το προσθέτει ως παιδί του Parent. Περάστε nil για σύνδεση κάτω από τη ρίζα του δέντρου δομής. Το PageIndex συνδέει το στοιχείο με τη σελίδα μέσω /Pg, ενώ αρνητική τιμή παραλείπει τη σύνδεση. Το MCID, όταν είναι μηδέν ή μεγαλύτερο, συσχετίζει μια marked-content ακολουθία στη σελίδα με το στοιχείο και την καταγράφει στο /ParentTree του εγγράφου. Η υπερφόρτωση έξι ορισμάτων προσθέτει /Alt και /ActualText, ενώ η υπερφόρτωση επτά ορισμάτων γράφει επιπλέον μοναδικό /ID
Τυπικοί τύποι δομής (Table 333)
Η υπερφόρτωση THPDFStandardStructureType είναι η ασφαλής ως προς τον τύπο είσοδος: το όνομα ρόλου /S ανήκει πάντα στους τυπικούς τύπους δομής του ISO 32000-1 §14.8.4 Table 333, αποφεύγοντας λάθη πληκτρολόγησης και διαφορές πεζών/κεφαλαίων
- Ομαδοποίηση:
sstDocument,sstPart,sstArt,sstSect,sstDiv,sstBlockQuote,sstCaption,sstTOC,sstTOCI,sstIndex,sstNonStruct,sstPrivate - Επίπεδο μπλοκ:
sstH,sstH1-sstH6,sstP,sstL,sstLI,sstLbl,sstLBody,sstTable,sstTR,sstTH,sstTD,sstTHead,sstTBody,sstTFoot - Ενσωματωμένο επίπεδο:
sstSpan,sstQuote,sstNote,sstReference,sstBibEntry,sstCode,sstLink,sstAnnot - Ruby και Warichu:
sstRuby,sstRB,sstRT,sstRP,sstWarichu,sstWT,sstWP - Εικονογράφηση:
sstFigure,sstFormula,sstForm
Προσέξτε τα πεζά γράμματα στα sstLbl / sstLBody: τα κυριολεκτικά ονόματα ρόλων PDF είναι Lbl και LBody. Προσαρμοσμένοι ρόλοι μπορούν να περάσουν από την υπερφόρτωση AnsiString και να αντιστοιχιστούν σε τυπικό ρόλο με AddStructRoleMap
Παράδειγμα
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', '');
Ιδιότητες δομής και αντιστοίχιση ρόλων
Η SetStructureElementLanguage γράφει παράκαμψη BCP-47 /Lang, η SetStructureElementExpansionText γράφει κείμενο επέκτασης /E, η SetStructureElementTitle γράφει τον αναγνώσιμο τίτλο /T και η AddStructRoleMap αντιστοιχίζει προσαρμοσμένους ρόλους δομής σε τυπικούς ρόλους PDF. Η StandardStructureTypeToName επιστρέφει το όνομα ρόλου PDF για μια τιμή THPDFStandardStructureType, ενώ η IsStandardStructureType ελέγχει αν ένα όνομα ρόλου είναι τυπικό
Βοηθητικές συναρτήσεις υψηλού επιπέδου για tagged περιεχόμενο
Οι EmitTaggedHeading, BeginTaggedList, EmitTaggedListItem, BeginTaggedTable, AddTaggedTableRow, EmitTaggedTableHeader, EmitTaggedTableCell, BeginTaggedFigure, EndTaggedFigure και RegisterAnnotForStructure καλύπτουν συνηθισμένη καλωδίωση PDF/UA για επικεφαλίδες, λίστες, πίνακες, σχήματα και σχόλια χωρίς χειροκίνητη διαχείριση MCID
Τυπική ροή εργασίας
Ενεργοποιήστε tagged έξοδο ή PDFUACompliance, δημιουργήστε το ριζικό στοιχείο δομής, χρησιμοποιήστε τις βοηθητικές συναρτήσεις για σημασιολογικό περιεχόμενο και κλείστε κάθε ακολουθία tagged περιεχομένου ή σχήματος πριν από το EndDoc