PDFium Delphi Component 文件

CharacterMapError 属性

组件: TPdf  ·  单元: PDFium
当指定索引处的字符无法映射到有效的 Unicode 码点时返回 True。该标志由 PDFium 文本提取器按字符报告,可帮助调用者识别那些很可能不正确的码点,因为原始字体缺少可用的 ToUnicode CMap 或编码向量。

Syntax

property CharacterMapError[Index: Integer]: Boolean; // read only

Index当前页面上基于 0 的字符索引,范围为 0 到 CharacterCount - 1

Description

CharacterMapError 在 PDFium 将指定索引处的字符 映射到 Unicode 码点时遇到错误时返回 True。当它为 True 时,Character[Index] 返回的值不可靠,通常会回退到替换字符(#$FFFD)或 底层字形标识符的直通值

该标志最常在打印机驱动程序和转换 工具生成的 PDF 上出现,这些 PDF 嵌入字体子集却没有相应的 ToUnicode CMap,或 CMap 未覆盖完整的字形集。带有嵌入式 OCR 文本的扫描 PDF 以及 使用自定义编码向量的 PDF 是映射错误的典型来源

需要从 PDF 往返文本的调用方,应在将 CharacterMapError 命中视为可搜索内容之前先过滤或标注它们。一 组连续的映射错误通常表明整个字符串段应 通过 OCR 而非文本层重新提取

Remarks

Example

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;

See Also

Character, Charcode, CharacterGenerated, CharacterCount, Text