#pdf #itext #tableofcontents
#PDF #itext #tableofcontents
Вопрос:
Мне нужно объединить несколько PDF-документов в один PDF-документ. Помимо этого, я должен сгенерировать оглавление. Исходные документы будут содержать текст с определенным стилем (скажем, H1). Этот специальный текст становится частью оглавления.
Использовали iText для объединения нескольких файлов PDF. Я не могу найти пример / API при разборе документа, чтобы найти все содержимое, имеющее стиль H1. Следующей задачей является генерация оглавления.
Ответ №1:
Вы этого не делаете. У PDF-файлов нет стилей. Они имеют «текущее графическое состояние», которое включает:
- текущая матрица преобразования (CTM).
- цвета обводки и заливки
- путь отсечения
- шрифт и размер
- множество других параметров состояния текста (интервал между символами, межсловный интервал, начало, режим отображения текста …)
-
- Включая отдельную матрицу преобразования текста, которая объединяется с CTM.
Итак, сначала вам нужно отследить весь этот материал (что iText в основном может сделать за вас). Затем вам нужно определить, насколько велик текст «H1», и зафиксировать весь текст, который соответствует размеру экрана этого размера, принимая во внимание CTM, текстовую матрицу и размер шрифта (что iText снова сделает за вас, IIRC).
И просто чтобы сделать жизнь более интересной для таких людей, как вы, вполне возможно, что текст, на который вы смотрите, вообще не текст. Это могут быть пути или растровое изображение … в этот момент вам понадобится OCR, и я не думаю, что вы получите много информации о размере с помощью OCR.
Вам нужно будет написать TextRenderListener
, который определяет конечный размер данного фрагмента текста (и является ли он частью последнего фрагмента) и отфильтровать все, что слишком мало. Затем вы создадите свое оглавление на основе найденного текста.
Комментарии:
1. Спасибо Марку за ответ. Возможно ли преобразовать PDF в DOCX, а затем проанализировать DOCX для текста, имеющего стиль H1, и затем снова сгенерировать PDF.
2. Этот теоретический конвертер DOCX сталкивается с той же проблемой, что и вы. Существует несколько приличных конвертеров PDF-> X, но они, как правило, стоят довольно дорого. Acrobat Pro может управлять чем-то приемлемым.