property CharacterGenerated[Index: Integer]: Boolean; // read only
| Index | Nullbasierter Zeichenindex auf der aktuellen Seite, im Bereich 0 bis CharacterCount - 1 |
CharacterGenerated gibt True zurück, wenn das Zeichen am
angegebenen Index intern von PDFium erzeugt wurde, anstatt im ursprünglichen
Inhalt-Stream vorhanden zu sein. Typische Beispiele sind: Ligatur-Zerlegung (Auftrennen
einer fi-Ligatur-Glyphe in f + i), das
nachgestellte Leerzeichen, das PDFium zwischen benachbarte, visuell getrennte Textläufe
einfügt, und die Zeilenumbruchzeichen, die am Ende jeder visuellen Zeile eingefügt werden
Erzeugte Zeichen haben keine eigene Zeichnung im Seiten-Inhalt-Stream, daher werden ihre Begrenzungsboxen aus Nachbar-Glyphen abgeleitet. Behandeln Sie ihre Position auf der Seite mit Vorsicht, wenn Sie pixelgenaue Hit-Tests benötigen; ihr CharacterRectangle kann zu einer Region ohne Breite oder Höhe kollabieren
Für Aufgaben wie exakte wortwörtliche Extraktion (digitale Signaturen, Text-Hash-Workflows, ASCII-treuer Vergleich mit dem Seiten-Inhalt-Stream) filtern Sie erzeugte Zeichen zuerst heraus. Für normale Textsuche und Zwischenablage-Kopie ist das Flag rein informativ – PDFium hat die Zeichen bereits eingefügt, weil Nutzer sie erwarten
True-Treffer; nehmen Sie nicht an, dass erzeugte Zeichen immer unsichtbare Glyphen sind
// Build a verbatim string that contains only characters from the content stream
var
I: Integer;
S: WString;
begin
S := '';
for I := 0 to Pdf.CharacterCount - 1 do
if not Pdf.CharacterGenerated[I] then
S := S + Pdf.Character[I];
Memo1.Text := S;
end;