property CharacterMapError[Index: Integer]: Boolean; // read only
| Index | Índice de carácter basado en cero en la página actual, en el rango de 0 a CharacterCount - 1 |
CharacterMapError devuelve True cuando PDFium encontró un error
al mapear el carácter en el índice especificado a un punto de código Unicode. Cuando esto es
True, el valor devuelto por Character[Index]
no es confiable y a menudo recurre a un carácter de reemplazo (#$FFFD) o a un
paso directo del identificador de glifo subyacente
La bandera se activa con mayor frecuencia en PDF producidos por controladores de impresora y herramientas de conversión que incrustan subconjuntos de fuentes sin un CMap ToUnicode correspondiente, o con un CMap que no cubre el conjunto completo de glifos. Los PDF escaneados con texto OCR incrustado y los PDF que usan vectores de codificación personalizados son fuentes típicas de errores de mapeo
Los llamadores que necesiten hacer un recorrido de ida y vuelta del texto de un PDF
deben filtrar o anotar los aciertos de CharacterMapError antes de tratarlos
como contenido buscable. Un grupo de errores de mapeo consecutivos normalmente indica una
ejecución completa de cadena que debería reextraerse mediante OCR en lugar de a través de
la capa de texto
True y la página actual haya sido analizada; de lo contrario devuelve 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;