SetStructElemIDA

标记 PDF、可访问性

描述

末尾的 A 表示 ANSI(char)DLL 入口点,ActiveX/COM 接口仅公开 Unicode 形式。其行为与 SetStructElemID 相同,字符串参数会按照当前的 SetAnsiMode 代码页进行解释

为当前在标签栈中打开的结构元素指定唯一标识字符串 该 ID 会作为结构元素字典中的 /ID 条目写入,并在文档的 /IDTree 名称树中建立索引,以便其他元素引用它(例如通过表格单元格的 /Headers 属性)请在 BeginTag 或 BeginTagEx 之后且在 EndTag 之前调用此函数

语法

Delphi

Function DLSetStructElemIDA(InstanceID: Integer; ID: PAnsiChar): Integer;

DLL

int DLSetStructElemIDA(int InstanceID, const char * ID);

参数

ID在文档中唯一标识此结构元素的非空字符串,应选择在整个文档中有意义且唯一的 ID,例如 TH-Col-1、TH-Row-2 或类似 GUID 的字符串

返回值

成功时返回 1;如果未打开文档、标记堆栈中当前没有打开的标记,或 ID 为空,则返回 0

备注

/ID 条目在 ISO 32000-1 §14.7.3.4 中定义。保存文档时,所有元素 ID 都会收集到结构树根中的扁平 /IDTree 名称树内;这使辅助功能工具和其他元素可按 ID 查找元素。/IDTree 条目按 ID 字符串的字母顺序排列

常见用例是使用 ID 标记表头单元格(TH),以便数据单元格(TD)可通过 SetStructElemHeaders 关联正确表头,对于 PDF/UA-1(ISO 14289-1 §7.10)和 WCAG 2.x 成功准则 1.3.1 下的复杂表格,此关联是必需的

若将相同 ID 分配给多个结构元素,则行为未定义;每个唯一 ID 只能有一个元素接收给定的 ID 字符串

示例

// Tag a column header cell with an ID for later /Headers reference
PDFlib.BeginTag('TH', 'Product Name', '', '');
PDFlib.SetStructElemID('TH-ProductName');
PDFlib.SetStructElemScope('Column');
PDFlib.DrawText('Product Name', 100, 700);
PDFlib.EndTag;

PDFlib.BeginTag('TH', 'Price', '', '');
PDFlib.SetStructElemID('TH-Price');
PDFlib.SetStructElemScope('Column');
PDFlib.DrawText('Price', 250, 700);
PDFlib.EndTag;

// Tag a data cell referencing both header cells
PDFlib.BeginTag('TD', '', '', '');
PDFlib.SetStructElemHeaders('TH-ProductName,TH-Price');
PDFlib.DrawText('Widget A', 100, 680);
PDFlib.EndTag;

另请参阅

SetStructElemHeaders, AddTagAttribute, BeginTag, EndTag, SetPDFUAMode