property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Indice di carattere a base zero nella pagina corrente, nell'intervallo da 0 a CharacterCount - 1 |
CharacterMapError restituisce True quando PDFium ha incontrato un errore
nella mappatura del carattere all'indice specificato a un punto di codice Unicode. Quando questo è
True, il valore restituito da Character[Index]
non è affidabile e spesso ricade su un carattere di sostituzione (#$FFFD) o
sul passaggio diretto dell'identificatore di glifo sottostante
Il flag si presenta più spesso su PDF prodotti da driver di stampante e strumenti di conversione che incorporano subset di font senza una corrispondente CMap ToUnicode, o con una CMap che non copre l'intero insieme di glifi. PDF scansionati con testo OCR incorporato e PDF che usano vettori di codifica personalizzati sono tipiche fonti di errori di mappatura
I chiamanti che devono fare round-trip del testo da un PDF dovrebbero filtrare o annotare
le occorrenze di CharacterMapError prima di trattarle come contenuto ricercabile. Un
gruppo di errori di mappatura consecutivi di solito indica un'intera sequenza di stringa che dovrebbe
essere ri-estratta attraverso OCR invece che tramite il livello di testo
True e la pagina corrente è stata analizzata; in caso contrario restituisce 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;