property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Index znaku na aktuální stránce indexovaný od nuly, v rozsahu 0 do CharacterCount - 1. |
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.
True a aktuální stránka byla analyzována; jinak vrací 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;