property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Op nul gebaseerde tekenindex op de huidige pagina, in het bereik 0 tot en met CharacterCount - 1. |
CharacterMapError geeft True terug wanneer PDFium een fout
ondervond bij het koppelen van het teken op de opgegeven index aan een Unicode-codepunt.
Wanneer dit True is, is de waarde die door
Character[Index] wordt teruggegeven onbetrouwbaar en
valt deze vaak terug op een vervangend teken (#$FFFD) of op een
doorvoer van de onderliggende glyph-identificatie.
De flag wordt meestal gegeven op PDF's die zijn geproduceerd door printerstuurprogramma's en conversiehulpmiddelen die lettertypesubsets insluiten zonder een bijbehorende ToUnicode-CMap, of met een CMap die niet de volledige glyph-set dekt. Gescande PDF's met ingesloten OCR-tekst en PDF's die aangepaste encoderingsvectoren gebruiken, zijn typische bronnen van koppelingsfouten.
Aanroepers die tekst van een PDF moeten round-trippen filteren of annoteren
CharacterMapError-treffers voordat ze als doorzoekbare inhoud worden
behandeld. Een cluster van opeenvolgende koppelingsfouten wijst meestal op een volledige
tekenreeks-run die via OCR opnieuw moet worden geëxtraheerd in plaats van via de tekstlaag.
True is en de huidige pagina is geparseerd; anders geeft deze False terug.
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;