PDF не является форматом WYSIWYG.
Это не потому, что вы видите абзац, что компьютерная программа может его увидеть.
Фактически, PDF без тегов может выглядетьвот так (псевдо-pdf-код):
перейти к расположению 10, 700
установить активный шрифт Times New Roman
установить размер шрифта 12
установить цветк черному
нарисуйте глиф 'H'
перейдите к координате 10, 680
нарисуйте глифы 'Lorem'
Как видно из примера, инструкции ненужно нарисовать текст в порядке чтения.
Итак, первая проблема, с которой вы столкнулись, - это определить абзацы.Я работал в iText, я разговаривал с разными людьми в Adobe.Возможность распознать структуру в немаркированном PDF-документе не считается легкой проблемой.
Как только у вас есть эта структура (до уровня «эти глифы составляют линию» и «эти строки составляют абзац»).и т. д., это вопрос создания StructureTree
Но так как этот вариант использования (изменение тега PDF) никогда не считался возможным, iText (или любая другая библиотека PDF, насколько мне известно) не совсемпредназначен для того, чтобы вы могли (легко) это сделать.
Сам тег является частью отдельной структуры данных внутри PDF.У тегов могут быть дочерние элементы (например, для обозначения «этот абзац содержит эти строки»).Сам тег будет ссылаться на объекты (группы инструкций), которые являются его частью.
Таким образом, вы могли бы иметь:
- эти инструкции (для визуализациистрока текста) составляют слово и формируют объект
- эти объекты слова объединяются (с помощью тега) в объект строки
- несколько тегов строки объединяются в объект абзаца
Для полного понимания, я рекомендую прочитать спецификацию PDF.