property CharacterGenerated[Index: Integer]: Boolean; // read only
| Index | Index de caractère de base 0 sur la page courante, dans la plage 0 à CharacterCount - 1 |
CharacterGenerated renvoie True lorsque le caractère à l’index spécifié a été généré en interne par PDFium plutôt que d’être présent dans le flux de contenu d’origine. Exemples typiques : décomposition de ligature (scinder un glyphe de ligature fi en f + i), l’espace final que PDFium insère entre des séquences de texte adjacentes séparées visuellement, et les caractères de saut de ligne injectés à la fin de chaque ligne visuelle
Les caractères générés n’ont pas de dessin propre dans le flux de contenu de la page ; leurs boîtes englobantes sont donc déduites des glyphes voisins. Méfiez-vous de leur position sur la page si vous avez besoin d’un hit-testing au pixel près : leur CharacterRectangle peut se réduire à une région de largeur ou de hauteur nulle
Pour les tâches telles que l’extraction verbatim exacte (signatures numériques, flux de travail hachage-du-texte, comparaison ASCII exacte avec le flux de contenu de page), filtrez d’abord les caractères générés. Pour la recherche de texte normale et la copie presse-papiers, le drapeau est purement informatif — PDFium a déjà inséré les caractères car les utilisateurs les attendent
True la plus courante ; ne supposez pas que les caractères générés sont toujours des glyphes invisibles
// 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;