THotPDF.AddStructureElement + PDF/UA accessibility attributes

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

 

AddXFAPacket  AcroForm Support

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

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