Получить все заголовки из документа PDF с iText - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь прочитать PDF-документ и извлечь все заголовки, которые есть в PDF-документе. Пример заголовков:

1 Заголовок

1.1 Пример заголовка 1

1.2 Пример заголовка 2

1.2.1 Пример заголовка 3

Для этого я использую iText. Есть идеи, как мне найти заголовки? Спасибо

PdfReader = new PdfReader((new FileInputStream(systemResource.getFile())));
PdfReaderContentParser parser = new PdfReaderContentParser(pdfReader);

for(int i = 1; i <= pdfReader.getNumberOfPages(); i++){
            TextExtractionStrategy simpleTextExtractionStrategy = parser.processContent(i, new SimpleTextExtractionStrategy());
            simpleTextExtractionStrategy.getResultantText();
}

1 Ответ

0 голосов
/ 28 мая 2018

Существуют две группы в рамках стандартов PDF, которые доступны.

  • Tagged: PDF-документ содержит метаинформацию, которая помогает определить структуру документа (абзацы, разделы, верхний колонтитул, нижний колонтитул, таблица, список и т. Д.)
  • Без тегов: PDF-документ содержит только инструкции для зрителя, чтобы иметь возможность визуализировать страницу.

    например:

    • переместить курсор на 50, 50
    • установить шрифт Helvetica, размер 12
    • нарисуйте глиф для символа 'H'
    • и т.д.

    Если ваш документ PDF помечен, будет легко получить структуру документа (и, следовательно, ваши заголовки).

Если документ PDF не имеет тегов, вам необходимо написать собственную пользовательскую логику для идентификации фрагментов текста (необработанные данные передаются IEventListener). Вам нужно объединить эти куски в строки (основываясь на некоторой эвристике). И тогда вы сможете идентифицировать заголовки (используя эвристику типа «начинается с числа» или «шрифт обычно больше среднего размера шрифта на странице и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...