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 上,這類檔案內嵌的字型子集缺少對應的 ToUnicode CMap,或是 CMap 未涵蓋完整的字形集。內嵌 OCR 文字的掃描式 PDF 與使用自訂編碼向量的 PDF,是對應錯誤的典型來源

需要從 PDF 往返(round-trip)文字的呼叫端,應先過濾或標註 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