PDFium Delphi Component Docs

CharacterMapError Eigenschaft

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

Index0-basierter Zeichenindex auf der aktuellen Seite, im Bereich 0 bis CharacterCount - 1

Description

CharacterMapError liefert True, wenn PDFium beim Mapping des Zeichens am angegebenen Index auf einen Unicode-Codepoint auf einen Fehler gestoßen ist. Steht das Flag auf True, ist der von Character[Index] gelieferte Wert unzuverlässig und fällt oft auf ein Ersatzzeichen (#$FFFD) oder eine Durchreichung des zugrunde liegenden Glyph-Identifiers zurück

Das Flag tritt am häufigsten bei PDFs auf, die Druckertreiber und Konverter erzeugen und die Font-Subsets ohne passende ToUnicode-CMap einbetten — oder mit einer CMap, die nicht den vollständigen Glyphenumfang abdeckt. Gescannte PDFs mit eingebettetem OCR-Text und PDFs mit eigenen Encoding-Vektoren sind typische Quellen für Map-Fehler

Wer Text aus einem PDF verlustfrei weiterverarbeiten will, sollte CharacterMapError-Treffer herausfiltern oder markieren, bevor er sie als durchsuchbaren Inhalt behandelt. Eine Häufung aufeinanderfolgender Map-Fehler zeigt meist eine ganze Zeichenkette an, die per OCR statt über die Textebene neu extrahiert werden sollte

Remarks

Example

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;

See Also

Character, Charcode, CharacterGenerated, CharacterCount, Text