property CharacterMapError[Index: Integer]: Boolean;// solo lectura
| Index | Índice de carácter basado en cero en la página actual, en el rango 0 a CharacterCount - 1 |
CharacterMapError devuelve True cuando PDFium encontró un error al asignar 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 fiable 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 más frecuencia en PDF producidos por controladores de impresora y herramientas de conversión que incrustan subconjuntos de fuente sin un CMap ToUnicode correspondiente, o con un CMap que no cubre el conjunto de glifos completo. Los PDF escaneados con texto OCR incrustado y los PDF que usan vectores de codificación personalizados son fuentes típicas de errores de asignación
Los llamadores que necesiten hacer un viaje de ida y vuelta del texto de un PDF deben filtrar o anotar los aciertos de CharacterMapError antes de tratarlos como contenido con capacidad de búsqueda. Un grupo de errores de asignación consecutivos normalmente indica una ejecución de cadena completa que debe reextraerse mediante OCR en lugar de la capa de texto
True y la página actual se ha analizado; 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;