PDFium Delphi Component Docs

CharacterMapError Propriété

Composant: TPdf  ·  Unit: PDFium
Renvoie True lorsque le caractère à l’index indiqué n’a pas pu être mappé vers un point de code Unicode valide. Le drapeau est signalé caractère par caractère par l’extracteur de texte PDFium et permet aux appelants d’identifier les points de code probablement incorrects parce que la police d’origine ne possède pas de ToUnicode CMap ou de vecteur d’encodage utilisable

Syntax

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

IndexIndex de caractère de base 0 sur la page courante, dans la plage 0 à CharacterCount - 1

Description

CharacterMapError renvoie True lorsque PDFium a rencontré une erreur lors du mappage du caractère à l’index indiqué vers un point de code Unicode. Quand cela vaut True, la valeur renvoyée par Character[Index] n’est pas fiable et retombe souvent sur un caractère de remplacement (#$FFFD) ou sur le passage tel quel de l’identifiant de glyphe sous-jacent

Le drapeau est le plus souvent levé sur des PDF produits par des pilotes d’imprimante et des outils de conversion qui intègrent des sous-ensembles de polices sans ToUnicode CMap correspondante, ou avec une CMap qui ne couvre pas l’ensemble complet des glyphes. Les PDF numérisés avec texte OCR intégré et les PDF qui utilisent des vecteurs d’encodage personnalisés sont des sources typiques d’erreurs de mappage

Les appelants qui doivent faire un aller-retour de texte depuis un PDF doivent filtrer ou annoter les occurrences CharacterMapError avant de les traiter comme contenu recherchable. Un groupe d’erreurs de mappage consécutives indique généralement une séquence de chaîne entière qui devrait être ré-extraite via OCR plutôt que via la couche de texte

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