THotPDF.AddStructureElement ve Tagged PDF yardımcıları
Bu sayfa, geçerli THotPDF etiketli PDF ve PDF/UA yapı ağacı yardımcılarını belgeler. Kod tanımlayıcıları genel bildirimlerle birebir eşleşir
Mevcut Delphi yüzeyi
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;
Yapı öğeleri oluşturma
AddStructureElement bir /StructElem sözlüğü oluşturur ve onu Parent'ın alt öğesi olarak ekler (yapı ağacı kökü altına bağlamak için nil geçirin). PageIndex öğeyi /Pg üzerinden sayfasına bağlar; atlamak için negatif bir değer geçirin. Sıfır veya daha büyük olduğunda MCID, sayfadaki bir işaretli içerik dizisini öğeyle ilişkilendirir ve belgenin /ParentTree'ine kaydeder. Altı bağımsız değişkenli overload; şekiller ve formüller gibi metin olmayan içerik için sesli okunan alternatif açıklama /Alt'ı ve kopyala/yapıştır'da döndürülen, çıkarımı zor glyph'ler için replacement metni /ActualText'i ekler. Yedi bağımsız değişkenli overload ayrıca belgeye özgü bir /ID yazar; böylece diğer yapı öğeleri öğeyi ID ile hedefleyebilir (ISO 32000-1 §14.7.2)
Standart yapı türleri (Tablo 333)
Tagged output veya PDFUACompliance etkinleştirin, kök yapı öğesini oluşturun, semantik içeriği yayımlamak için yardımcı ailesini kullanın ve EndDoc öncesinde başlatılan her tagged-content veya figure dizisini kapatın
- Gruplama:
sstDocument,sstPart,sstArt,sstSect,sstDiv,sstBlockQuote,sstCaption,sstTOC,sstTOCI,sstIndex,sstNonStruct,sstPrivate - Blok düzeyi:
sstH,sstH1-sstH6,sstP,sstL,sstLI,sstLbl,sstLBody,sstTable,sstTR,sstTH,sstTD,sstTHead,sstTBody,sstTFoot - Satır içi düzey:
sstSpan,sstQuote,sstNote,sstReference,sstBibEntry,sstCode,sstLink,sstAnnot - Ruby ve Warichu:
sstRuby,sstRB,sstRT,sstRP,sstWarichu,sstWT,sstWP - Çizim:
sstFigure,sstFormula,sstForm
sstLbl / sstLBody içindeki küçük harflere dikkat edin: gerçek PDF rol adları Lbl ve LBody'dir. Özel rol adları yine AnsiString overload'ı üzerinden geçirilebilir ve AddStructRoleMap ile standart bir role eşlenebilir
Örnek
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', '');
Yapı öznitelikleri ve rol eşleme
SetStructureElementLanguage BCP-47 /Lang override'ı yazar, SetStructureElementExpansionText /E açılım metnini yazar, SetStructureElementTitle insan tarafından okunabilir /T başlığını yazar, AddStructRoleMap özel yapı rollerini standart PDF rollerine eşler. StandardStructureTypeToName, bir THPDFStandardStructureType değeri için PDF rol adını döndürür; IsStandardStructureType ise bir rol adının standart rollerden biri olup olmadığını denetler
Üst düzey etiketli yardımcılar
EmitTaggedHeading, BeginTaggedList, EmitTaggedListItem, BeginTaggedTable, AddTaggedTableRow, EmitTaggedTableHeader, EmitTaggedTableCell, BeginTaggedFigure, EndTaggedFigure ve RegisterAnnotForStructure; yaygın PDF/UA başlık, liste, tablo, şekil ve ek açıklama bağlantılarını, çağıranlara MCID'leri elle yönetme yükü getirmeden kapsar
Tipik iş akışı
Etiketli çıktıyı veya PDFUACompliance'ı etkinleştirin, kök yapı öğesini oluşturun, anlamsal içeriği yazmak için yardımcı ailesini kullanın ve EndDoc'tan önce başlatılmış her etiketli içerik veya şekil dizisini kapatın
Devam-güvenli yazım
BeginTaggedContentForStructure ve AppendStructureMarkedContent; sayfa yerel işaretli içerik referanslarını, sayfa devamaları boyunca tek bir var olan mantıksal yapı öğesine bağlar
Layout ağaçlarından otomatik PDF/UA yapısı aynı modeli bildirimsel başlıklara, listelere, tablolara, şekillere ve artifact'lara uygular