Генерация оглавления PDF itext

#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 может управлять чем-то приемлемым.