PDFium Delphi Component Docs

CharacterMapError Propriedade

Componente: TPdf  ·  Unidade: PDFium
Retorna True quando o caractere no índice especificado não pôde ser mapeado para um ponto de código Unicode válido. O sinalizador é relatado por caractere pelo extrator de texto do PDFium e permite que os chamadores identifiquem pontos de código provavelmente incorretos porque a fonte de origem não possui um ToUnicode CMap ou vetor de codificação utilizável.

Syntax

property CharacterMapError[Index: Integer]: Boolean; // read only

IndexÍndice de caractere baseado em zero na página atual, no intervalo de 0 a CharacterCount - 1.

Description

CharacterMapError retorna True quando o PDFium encontrou um erro ao mapear o caractere no índice especificado para um ponto de código Unicode. Quando isso é True, o valor retornado por Character[Index] não é confiável e frequentemente recorre a um caractere de substituição (#$FFFD) ou a uma passagem direta do identificador de glifo subjacente.

O sinalizador é ativado com mais frequência em PDFs produzidos por drivers de impressora e ferramentas de conversão que embutem subconjuntos de fontes sem um ToUnicode CMap correspondente, ou com um CMap que não cobre o conjunto completo de glifos. PDFs digitalizados com texto OCR embutido e PDFs que usam vetores de codificação personalizados são fontes típicas de erros de mapeamento.

Chamadores que precisam fazer ida e volta de texto de um PDF devem filtrar ou anotar as ocorrências de CharacterMapError antes de tratá-las como conteúdo pesquisável. Um agrupamento de erros de mapeamento consecutivos geralmente indica uma execução inteira de string que deveria ser extraída novamente por OCR em vez de pela camada 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