GetTextBlockCharContentLocation

文本、提取、内容流、诊断

描述

返回与单个提取字符关联的稳定内容流位置和编码源字节区间

语法

Delphi

Function TPDFlib.GetTextBlockCharContentLocation(TextBlockListID, Index,
  CharIndex: Integer; Out ContentLayer, StreamObjectNumber,
  StreamGeneration, InstructionIndex, OperandIndex, ArrayElementIndex,
  SourceByteOffset, SourceByteLength, Flags: Integer): Integer;

参数

TextBlockListID由 ExtractPageTextBlocks 返回的句柄
Index从 1 开始的文本块索引
CharIndex块文本内从 1 开始的 UTF-16 代码单元位置
ContentLayer从 1 开始的页面 /Contents 层;嵌套内容为 0
StreamObjectNumber包含流的对象编号;直接流为 0
StreamGeneration包含流的世代编号
InstructionIndex解码后内容程序中从 0 开始的指令索引
OperandIndex从 0 开始的文本字符串操作数索引
ArrayElementIndex从 0 开始的 TJ 数组元素;直接字符串操作数为 -1
SourceByteOffset解码字符串值中从 0 开始的偏移;不存在可安全寻址的区间时为 -1
SourceByteLength源字形对应的编码源字节数;不存在可安全寻址的区间时为 0
Flags下文描述的按位内容位置标志

返回值

1已返回位置记录(包括合成记录或只读记录)
0句柄、块索引或字符索引无效

标志

PDF_TEXT_CHAR_CONTENT_LOCATION_VALID字节区间标识一个内容字符串,可能受只读标志约束
PDF_TEXT_CHAR_CONTENT_LOCATION_GENERATED该字符在布局期间生成,没有源字节
PDF_TEXT_CHAR_CONTENT_LOCATION_LIGATURE多个提取的 UTF-16 位置共享一个源字形区间
PDF_TEXT_CHAR_CONTENT_LOCATION_ACTUALTEXT该字符来自 /ActualText 替换,为只读
PDF_TEXT_CHAR_CONTENT_LOCATION_NESTED该字符来自嵌套的 Form 内容,为只读
PDF_TEXT_CHAR_CONTENT_LOCATION_CROSS_LAYER操作数与文本显示操作符跨越页面内容层,为只读
PDF_TEXT_CHAR_CONTENT_LOCATION_TRANSCODED源字符串在字体映射前经过转码,因此解码偏移无法安全寻址其原始字节

备注

偏移量寻址的是解码后的字体编码字符串字节,而非 Unicode 文本

增补字符和连字展开可能为多个 UTF-16 位置返回相同的源范围

只有当有效标志已设置且所有只读标志都不存在时,才使用 ReplaceTextBlockCharSourceBytes

位置查找使用提取时的跨度,不重新解析页面内容