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
位置查找使用提取时的跨度,不重新解析页面内容