property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Nullbasierter Zeichenindex auf der aktuellen Seite im Bereich 0 bis CharacterCount - 1. |
CharacterMapError gibt True zurück, wenn PDFium beim Zuordnen
des Zeichens am angegebenen Index zu einem Unicode-Codepoint einen Fehler festgestellt hat. Wenn dies
True ist, ist der von Character[Index]
zurückgegebene Wert unzuverlässig und fällt oft auf ein Ersetzungszeichen (#$FFFD) oder
auf eine direkte Weitergabe der zugrunde liegenden Glyphen-ID zurück.
Das Flag wird am häufigsten bei PDFs gesetzt, die von Druckertreibern und Konvertierungstools erzeugt wurden und Schriftuntergruppen ohne entsprechende ToUnicode CMap oder mit einer CMap einbetten, die den gesamten Glyphensatz nicht abdeckt. Gescannte PDFs mit eingebettetem OCR-Text und PDFs, die benutzerdefinierte Kodierungsvektoren verwenden, sind typische Quellen für Zuordnungsfehler.
Aufrufer, die Text aus einem PDF hin- und zurückwandeln müssen, sollten CharacterMapError-Treffer
herausfiltern oder kennzeichnen, bevor sie sie als durchsuchbaren Inhalt behandeln. Ein
Block aufeinanderfolgender Zuordnungsfehler weist meist auf einen ganzen Zeichenlauf hin, der
per OCR statt über die Textebene neu extrahiert werden sollte.
True ist und die aktuelle Seite geparst wurde; andernfalls gibt sie False zurück.
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;