SetStructElemActualText

带标签 PDF & 辅助功能

描述

在标签堆栈中当前正在构建的结构元素上设置 /ActualText 条目,ActualText 提供该元素表示的精确 Unicode 文本,覆盖阅读器软件从 PDF 内容流中提取的任何文本

当内容流中渲染的字形未直接映射到预期阅读顺序字符时,请使用此函数 — 例如,应读取为双字符序列 fffifl 的连字字形(ff、fi、fl),若没有 ActualText,文本提取工具和屏幕阅读器可能对此类字形产生错误输出

语法

Delphi

Function TPDFlib.SetStructElemActualText(Const ActualText: WideString): Integer;

ActiveX

Function PDFlib::SetStructElemActualText(ActualText As String) As Long

DLL

int DLSetStructElemActualText(int InstanceID, const wchar_t * ActualText);

参数

ActualText与当前结构元素关联的 Unicode 文本字符串 传入空字符串可清除先前设置的值

返回值

成功返回 1;如果当前没有打开的结构元素或没有选中文档,则返回 0

备注

当目标元素位于标签栈顶部时,请在 BeginTagBeginTagEx 之后立即调用此函数

ActualText 和 AltText 用途不同。AltText(通过 BeginTag 的 AltText 参数设置)是整个元素的替代表示,用于视觉内容无法渲染时供辅助技术使用。ActualText 用于补充内容流文本提取:它会替换元素提取出的字符序列,但不会阻止渲染。同时支持二者的屏幕阅读器通常会在存在 ActualText 时将其用于朗读输出

ISO 32000-1 §14.9.4 将 ActualText 定义为结构元素字典上的 PDF 文本字符串条目,PDF/UA-1(ISO 14289-1 §7.1)要求文本内容可提取且正确,对于直接提取会产生歧义或错误的字形序列,ActualText 是满足此要求的标准机制

示例

// Tag a ligature glyph so that text extraction yields "fi"
PDFlib.BeginTag('Span', '', '');
PDFlib.SetStructElemActualText('fi');
PDFlib.TextOut(x, y, #$FB01);   // U+FB01 LATIN SMALL LIGATURE FI
PDFlib.EndTag;

另请参阅

BeginTag, BeginTagEx, SetStructElemID, AddTagAttribute, GetPDFUADiagnostics