ReplaceTextBlockCharSourceBytes
文本、提取、内容流、文档编辑
描述
替换选定文档中映射到单个已提取字符的编码源字节范围
语法
Delphi
Function TPDFlib.ReplaceTextBlockCharSourceBytes(TextBlockListID, Index,
CharIndex: Integer; Const NewSource: AnsiString): Integer;参数
| TextBlockListID | ExtractPageTextBlocks 为选定文档返回的句柄 |
|---|---|
| Index | 从 1 开始的文本块索引 |
| CharIndex | 块文本内从 1 开始的 UTF-16 代码单元位置 |
| NewSource | 活动 PDF 字体编码下的原始替换字节,而非 Unicode 文本 |
返回值
| 1 | 已替换映射的字节范围并重写了其页面内容层 |
|---|---|
| 0 | 位置无效、已过期或只读,或内容层无法重写 |
错误代码
PDFLIB_ERROR_TEXT_LOCATION_INVALID | 列表、索引、位置或内容指令无效 |
|---|---|
PDFLIB_ERROR_TEXT_LOCATION_STALE | 目标页面内容层自提取以来已发生变化 |
PDFLIB_ERROR_TEXT_LOCATION_READ_ONLY | 该字符为生成字符、被 /ActualText 替换、嵌套在 Form 中、在字体映射前经过转码,或跨内容层拆分 |
备注
该方法只重写所在页面内容层,保留相邻的 Tj 字符串、TJ 数组字符串和字距数值
两个独立的指纹在解析前和写入前检测过期内容,因此旧的提取结果不会悄然命中已更改的字节
每次成功替换后都要重新提取页面文本,因为上一个列表中的所有位置都已过期
连字展开的字符共享同一源范围,应视为一个源字形
成功或失败之后都会恢复所选页面