property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Nollbaserat teckenindex på den aktuella sidan, i intervallet 0 till CharacterCount - 1 |
CharacterMapError returnerar True när PDFium stötte på ett fel
vid mappningen av tecknet vid det angivna indexet till en Unicode-kodpunkt. När detta är
True är värdet som returneras av Character[Index]
opålitligt och faller ofta tillbaka på ett ersättningstecken (#$FFFD) eller
på en direkt genomsläppning av den underliggande glyfidentifieraren
Flaggan höjs oftast på PDF-dokument som skapats av skrivardrivrutiner och konverteringsverktyg som bäddar in teckensnittsdelmängder utan en motsvarande ToUnicode CMap, eller med en CMap som inte täcker hela glyfuppsättningen. Inskannade PDF-dokument med inbäddad OCR-text och PDF-dokument som använder anpassade kodningsvektorer är typiska källor till mappningsfel
Anropare som behöver föra text fram och tillbaka från ett PDF-dokument bör filtrera eller
annotera CharacterMapError-träffar innan de behandlas som sökbart innehåll. En
samling på varandra följande mappningsfel indikerar vanligtvis ett helt textavsnitt som bör
extraheras igen via OCR i stället för via textlagret
True och den aktuella sidan har tolkats; annars returneras 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;