property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Zero-based character index on the current page, in the range 0 to CharacterCount - 1. |
CharacterMapError vrne True, kadar je PDFium naletel na
napako pri preslikavi znaka na podanem indeksu v kodno točko Unicode. Kadar je ta
vrednost True, je rezultat, ki ga vrne Character[Index],
nezanesljiv in pogosto pade nazaj na nadomestni znak (#$FFFD) ali na
neposredni prevod identifikatorja osnovnega glifa.
Zastavica se najpogosteje sproži na datotekah PDF, ki so jih ustvarili gonilniki tiskalnikov in pretvorniška orodja ter vdelajo podmnožice pisav brez ustrezne preslikave ToUnicode CMap ali s preslikavo, ki ne pokriva celotne množice glifov. Optično prebrani PDF-i z vdelanim besedilom OCR in PDF-i z lastnimi vektorji kodiranja so tipični viri napak preslikav.
Klicatelji, ki morajo besedilo iz PDF-a povrniti v drugo obliko, bi morali zadetke
CharacterMapError filtrirati ali označiti, preden jih obravnavajo kot
vsebino, ki jo je mogoče iskati. Kopica zaporednih napak preslikav običajno kaže na
celoten niz znakov, ki ga je treba znova izločiti z OCR in ne prek plasti
besedila.
True in je trenutna stran razčlenjena; sicer vrne 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;