PDFium Delphi Component Docs

Propiedad CharacterMapError

Componente: TPdf  ·  Unidad: PDFium
Devuelve True cuando el carácter en el índice especificado no pudo mapearse a un punto de código Unicode válido. La marca se informa por carácter mediante el extractor de texto de PDFium y permite identificar puntos de código que probablemente sean incorrectos porque la fuente de origen carece de un ToUnicode CMap o de un vector de codificación usable

Syntax

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

Description

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

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