PDFium Component Docs

CharacterMapError Eigenschaft

Dieser API-Eintrag behält Bezeichner, Signaturen, Codeblöcke und PDF-Begriffe in ihrer Originalform.
Komponente: TPdf  ·  Unit: PDFium
Gibt True zurück, wenn das Zeichen am angegebenen Index nicht auf einen gültigen Unicode-Codepoint abgebildet werden konnte. Das Flag wird vom PDFium-Text-Extractor pro Zeichen gemeldet und hilft Aufrufern, Codepoints zu erkennen, die wahrscheinlich falsch sind, weil der ursprünglichen Schrift eine verwendbare ToUnicode-CMap oder ein Kodierungsvektor fehlt

Syntax

property CharacterMapError[Index: Integer]: Boolean; // read only

IndexNullbasierter Zeichenindex auf der aktuellen Seite im Bereich 0 bis CharacterCount - 1.

Beschreibung

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.

Hinweise

Beispiel

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;

Siehe auch

Character, Charcode, CharacterGenerated, CharacterCount, Text