property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | 当前页面上基于 0 的字符索引,范围为 0 到 CharacterCount - 1 |
CharacterMapError 在 PDFium 将指定索引处的字符
映射到 Unicode 码点时遇到错误时返回 True。当它为
True 时,Character[Index]
返回的值不可靠,通常会回退到替换字符(#$FFFD)或
底层字形标识符的直通值
该标志最常在打印机驱动程序和转换 工具生成的 PDF 上出现,这些 PDF 嵌入字体子集却没有相应的 ToUnicode CMap,或 CMap 未覆盖完整的字形集。带有嵌入式 OCR 文本的扫描 PDF 以及 使用自定义编码向量的 PDF 是映射错误的典型来源
需要从 PDF 往返文本的调用方,应在将
CharacterMapError 命中视为可搜索内容之前先过滤或标注它们。一
组连续的映射错误通常表明整个字符串段应
通过 OCR 而非文本层重新提取
True 且当前页面已解析时才有意义;否则返回 False
var
I, BadCount: Integer;
begin
BadCount := 0;
for I := 0 to Pdf.CharacterCount - 1 do
if Pdf.CharacterMapError[I] then
begin
Memo1.Lines.Add(Format('Map error at %d (charcode $%x)',
[I, Pdf.Charcode[I]]));
Inc(BadCount);
end;
Caption := Format('%d untranslatable characters on page', [BadCount]);
end;