PDF с текстом содержит синтаксис, который рисует глифы на странице. Формы этих глифов хранятся в шрифте. Синтаксис, используемый для страницы, использует символы для обозначения глифов.
Например:
12334 54637
Возможное представление:
Hello World
Где у вас есть следующее отображение:
`1` = `H`
`2` = `e`
`3` = `l`
`4` = `0`
` ` = ` `
`5` = `W`
`6` = `r`
`7` = `d`
Когда вы смотрите на страницу как на человека, вы видите «Hello World», но когда машина смотрит на синтаксис страницы, она видит «12334 54637», и это также то, что вы получаете, если извлекаете контент без используя отображение toUnicode
.
Отображение, которое я только что описал (1
= H
, 2
= e
, 3
= l
, ...), хранится в объекте, который отображает символы, используемые на странице с символами Юникода. Если эта карта отсутствует, то нет способа правильно извлечь содержимое.
Указанная вами ошибка Нет сопоставления Unicode для CID + 88 (88) в шрифте 404198E5f54TimesNewRoman сообщает, что в вашем PDF отсутствует информация, поэтому вы не можете получить надежный результат. Вы можете видеть правильный текст своими человеческими глазами, но машина не может преобразовать текст в полезную строку.
Если этот ответ вас не устраивает, поделитесь PDF-файлом, чтобы мы могли доказать, что этот ответ правильный. Также: вы не упоминаете, какую версию iText вы используете. Старые версии обычно не так хороши для извлечения текста по сравнению с более свежими версиями (iText 7.1.2 - самая последняя версия).