True, keď znak na zadanom indexe nebolo možné namapovať na platný Unicode kódový bod. Príznak hlási extraktor textu PDFium po jednotlivých znakoch a umožňuje rozpoznať kódové body, ktoré sú pravdepodobne nesprávne, pretože pôvodné písmo nemá použiteľnú ToUnicode CMap alebo kódovaciu vektorovú mapuproperty CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Index znaku so základom 0 na aktuálnej strane, v rozsahu 0 až CharacterCount - 1. |
CharacterMapError vráti True, keď PDFium narazil na chybu
pri mapovaní znaku na zadanom indexe na bod Unicode. Keď je to
True, hodnota vrátená Character[Index]
je nespoľahlivá a často sa vráti na náhradný znak (#$FFFD) alebo
na priepust podkladového identifikátora glyfu.
Príznak sa najčastejšie vyvoláva na PDF vytvorených ovládačmi tlačiarní a konverznými nástrojmi, ktoré vkladajú podmnožiny fontov bez zodpovedajúceho ToUnicode CMap, alebo s CMap, ktorý nepokrýva celú sadu glyfov. Skenované PDF so vloženým textom OCR a PDF, ktoré používajú vlastné kódovacie vektory, sú typickými zdrojmi chýb mapovania.
Volajúci, ktorí potrebujú obehnuť text z PDF, by mali predtým, ako ich budú považovať za prehľadávaný obsah, vyfiltrovať alebo anotovať
zásahy CharacterMapError. Zoskupenie
po sebe idúcich chýb mapovania zvyčajne označuje celý beh reťazca, ktorý by sa mal
re-extrahovať prostredníctvom OCR namiesto cez textovú vrstvu.
True a aktuálna strana bola rozparsovaná; inak vráti False.
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;