THotPDF.AddStructureElement + سمات إمكانية الوصول لـ PDF/UA

سطح tagged-PDF لـ THotPDF (الإصدار v2.119.36 / v2.119.40 / v2.119.41)

 

AddXFAPacket  AcroForm Support

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 للإلحاق تحت structure tree root. يربط PageIndex العنصر بصفحته عبر /Pg؛ ويمثل MCID تسلسل marked-content على الصفحة عند كونه صفرًا أو أكبر. تضيف overloads الإضافية /Alt و/ActualText و/ID عند الحاجة

أنواع الهيكل القياسية (الجدول 333)

التحميل الزائد للتعداد THPDFStandardStructureType هو نقطة الدخول الآمنة للأنواع: اسم الدور /S الصادر مضمون ليكون أحد أنواع الهيكل القياسية للمواصفة ISO 32000-1 §14.8.4 الجدول 333، مما يقضي على مخاطر الأخطاء الإملائية وحساسية حالة الأحرف للتحميل الزائد للسلاسل المفتوحة. يجمع التعداد الأسماء حسب عائلة المواصفات الخاصة بها

لاحظ الأحرف الصغيرة في 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 تجاوز /Lang بنمط BCP-47، ويكتب SetStructureElementExpansionText نص /E، ويكتب SetStructureElementTitle عنوان /T المقروء، ويربط AddStructRoleMap أدوار البنية المخصصة بالأدوار القياسية في PDF

مساعدات الوسوم عالية المستوى

تغطي EmitTaggedHeading وBeginTaggedList وEmitTaggedListItem وBeginTaggedTable وAddTaggedTableRow وEmitTaggedTableHeader وEmitTaggedTableCell وBeginTaggedFigure وEndTaggedFigure وRegisterAnnotForStructure ربط عناوين PDF/UA والقوائم والجداول والأشكال والتعليقات دون إلزام المستدعين بإدارة MCIDs يدويًا

سير العمل النموذجي

قم بتمكين المخرجات الموسومة أو PDFUACompliance، وأنشئ عنصر الهيكل الجذري، واستخدم عائلة المساعدين لإصدار محتوى دلالي، وأغلق كل تسلسل محتوى موسوم أو شكل تم بدؤه قبل EndDoc