PDFium Delphi Component Docs

CharacterMapError vlastnost

Component: TPdf  ·  Unit: PDFium
Vrací True, když znak na zadaném indexu nebylo možné namapovat na platný bod kódu Unicode. Příznak hlásí extraktor textu PDFium pro každý znak a umožňuje volajícím určit body kódu, které jsou pravděpodobně chybné, protože zdrojové písmo nemá použitelný ToUnicode CMap nebo vektor kódování

Syntax

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

IndexIndex znaku na aktuální stránce indexovaný od nuly, v rozsahu 0 do CharacterCount - 1.

Description

CharacterMapError vrací True, když PDFium narazil na chybu při mapování znaku na zadaném indexu na bod kódu Unicode. Pokud je to True, hodnota vrácená vlastností Character[Index] je nespolehlivá a často padá na náhradní znak (#$FFFD) nebo na průchod identifikátoru podkladového glyfu.

Příznak se nejčastěji objevuje u PDF vytvořených ovladači tiskáren a konverzními nástroji, které vkládají podmnožiny písem bez odpovídajícího ToUnicode CMap, nebo s CMap, který nepokrývá úplnou sadu glyfů. Skenovaná PDF s vloženým textem OCR a PDF používající vlastní vektory kódování jsou typickými zdroji chyb mapování.

Volající, kteří potřebují text z PDF přenést tam a zpět, by měli zásahy CharacterMapError vyfiltrovat nebo anotovat, dříve než je budou považovat za prohledávatelný obsah. Shluk po sobě jdoucích chyb mapování obvykle naznačuje celý běh řetězce, který by měl být znovu extrahován přes OCR, nikoli přes textovou vrstvu.

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