Краткий ответ:
Конечно, есть способ сделать это. iText (наряду со многими другими библиотеками PDF) способны сделать это.Таким образом, существует алгоритм для извлечения текста.
Длинный ответ:
PDF не является форматом WYSIWYG.Документ PDF - это своего рода безбожный брак между «объектами, которые ссылаются друг на друга» и «языком программирования».
Позвольте мне объяснить.Документ PDF имеет графическое состояние.Поэтому, всякий раз, когда вы видите текст в документе PDF (в средстве просмотра, таком как Adobe Reader), вы, по сути, видите результат некоторого «кода» в документе PDF, который говорит:
Переходите к позиции 50, 720
Установите для активного шрифта значение Helvetica, размер шрифта 12
Установите для активного цвета рисунка черный
Нарисуйте глиф, соответствующий символу 'H'
Перейдите в положение 53, 720
Нарисуйтеглиф, соответствующий символу 'e'
и т. д.
Инструкции и ресурсы (например, шрифты, изображения, векторная графика) могут быть сгруппированы в объекты.
Каждый объектприсваивает номер и явно упоминается в таблице перекрестных ссылок (в конце документа PDF).
Итак, чтобы прочитать текст из документа PDF, вам необходимо:
- прочитать таблицу XREF
- выяснить, где (в байтовом положении) объекты \ page начинают
- анализировать объект \ page и все его подчиненные объекты (снова используя таблицу XREF)выяснить где в файле каждый из этих подобъектов:)
- синтаксический анализ геометрических инструкций (графическое состояние не должно течь в том же направлении, что и текст)
- сортировка всех видимых символов (сравнение фонаи цвет переднего плана, окклюзия другими объектами, такими как изображения и т. д.) в соответствии с направлением, в котором вы ожидаете, что текст будет записан в
- построение возвращаемой строки
И, вероятно, поэтомудругие люди используют библиотеки.Не поймите меня неправильно, я большой поклонник того, чтобы делать это самостоятельно (это лучший способ получить глубокие знания о том, как работают определенные вещи).
Но посмотрите на это с точки зренияодин из ваших пользователей.Что бы вы доверяли больше?
- Программа, использующая «самописный» код для обработки документов PDF (общий опыт анализа документов PDF <1 год), * 1052 * <li>или программа, которая просто вызывает библиотеку PDF (общий опыт разбора PDF документов> 20 лет)