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. |
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.
True e a página atual foi analisada; caso contrário, retorna 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;