PDFium Delphi Component Docs

CharacterMapError властивість

Component: TPdf  ·  Unit: PDFium
Повертає True, коли символ за вказаним індексом не вдалося зіставити з коректним Unicode code point. Прапорець повідомляється для кожного символу текстовим екстрактором PDFium і дає змогу викликачам визначати code points, які, ймовірно, є некоректними через те, що вихідний шрифт не має придатного ToUnicode CMap або encoding vector

Syntax

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

IndexІндекс символу з нульовою базою на поточній сторінці, у діапазоні від 0 до CharacterCount - 1

Description

CharacterMapError повертає True, коли PDFium зіткнувся з помилкою зіставлення символу за вказаним індексом із кодовою точкою Unicode. Коли це True, значення, повернене Character[Index], є ненадійним і часто звертається до символу заміни (#$FFFD) або до passthrough базового ідентифікатора гліфа

Прапорець найчастіше підіймається на PDF, створених драйверами принтерів та інструментами конвертації, що вбудовують підмножини шрифтів без відповідного ToUnicode CMap або з CMap, що не покриває повний набір гліфів. Скановані PDF із вбудованим OCR-текстом та PDF, які використовують власні вектори кодування, — типові джерела помилок зіставлення

Виклики, яким потрібно передавати текст із PDF туди й назад, мають фільтрувати або анотувати попадання CharacterMapError, перш ніж вважати їх придатним для пошуку вмістом. Кластер послідовних помилок зіставлення зазвичай вказує на цілий рядковий прогін, який слід витягнути повторно через OCR, а не через текстовий шар

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