THotPDF.AddStructureElement + attributs d’accessibilité PDF/UA

THotPDF surface PDF balisée (v2.119.36 / v2.119.40 / v2.119.41)

 

AddXFAPacket  Prise en charge AcroForm

THotPDF.AddStructureElement et assistants PDF balisés

Cette page documente les helpers actuels de PDF balisé et d’arbre de structure PDF/UA de THotPDF. Les identifiants de code correspondent aux déclarations publiques

Surface Delphi actuelle

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 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;

Création d’éléments de structure

AddStructureElement crée un dictionnaire /StructElem et l’ajoute comme enfant de Parent (transmettez nil pour l’attacher sous la racine de l’arbre de structure). PageIndex lie l’élément à sa page via /Pg ; transmettez une valeur négative pour omettre. MCID, lorsqu’il est supérieur ou égal à zéro, associe une séquence de contenu marqué de la page à l’élément et l’enregistre dans le /ParentTree du document. La surcharge à six arguments ajoute /Alt (description alternative lue à voix haute pour le contenu non textuel tel que figures et formules) et /ActualText (texte de remplacement renvoyé par copier/coller pour les glyphes difficiles à extraire). La surcharge à sept arguments écrit en outre un /ID unique dans le document afin que d’autres éléments de structure puissent cibler l’élément par ID (ISO 32000-1 §14.7.2)

Types de structure standard (Table 333)

La surcharge à énumération THPDFStandardStructureType est le point d’entrée sûr en types : le nom de rôle /S émis est garanti être l’un des types de structure standard d’ISO 32000-1 §14.8.4 Table 333, éliminant le risque de faute de frappe et de casse de la surcharge à chaîne ouverte. L’énumération groupe les noms par famille de spécification :

Notez les minuscules dans sstLbl / sstLBody : les noms de rôles PDF littéraux sont Lbl et LBody. Les noms de rôles personnalisés peuvent toujours être transmis via la surcharge AnsiString et ramenés à un rôle standard avec AddStructRoleMap

Exemple

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 voyagent sur la surcharge AnsiString ; réutilisez le
// nom de rôle prescrit par la spécification via StandardStructureTypeToName
Fig := PDF.AddStructureElement(StandardStructureTypeToName(sstFigure), Doc, 0, -1,
function IsStandardStructureType(const Name: AnsiString): Boolean;

Attributs de structure et mappage des rôles

SetStructureElementLanguage écrit une substitution BCP-47 /Lang, SetStructureElementExpansionText écrit le texte d’expansion /E, SetStructureElementTitle écrit le titre lisible /T, et AddStructRoleMap mappe les rôles de structure personnalisés vers les rôles PDF standard. StandardStructureTypeToName renvoie le nom de rôle PDF pour une valeur THPDFStandardStructureType, et IsStandardStructureType vérifie si un nom de rôle est standard

Assistants PDF balisés de haut niveau

EmitTaggedHeading, BeginTaggedList, EmitTaggedListItem, BeginTaggedTable, AddTaggedTableRow, EmitTaggedTableHeader, EmitTaggedTableCell, BeginTaggedFigure, EndTaggedFigure et RegisterAnnotForStructure couvrent le chaînage courant des titres, listes, tableaux, figures et annotations PDF/UA sans obliger les appelants à gérer les MCID manuellement

Flux de travail type

Activez la sortie balisée ou PDFUACompliance, créez l’élément racine de structure, utilisez la famille d’assistants pour émettre du contenu sémantique, puis fermez chaque séquence de contenu balisé ou de figure ouverte avant EndDoc

Création sûre en continuation

BeginTaggedContentForStructure et AppendStructureMarkedContent attachent des références de contenu marqué locales à la page à un même élément de structure logique existant à travers les continuations de pages

Structure PDF/UA automatique issue des arbres de mise en page applique le même modèle aux titres, listes, tableaux, figures et artefacts déclaratifs