PDF-файл, которым вы поделились, не содержит поля формы AcroForm.
Если вы проверите файл с помощью браузера PDF (например, iText RUPS или PDFBox PDFDebugger), вы увидите, что Каталог содержит только Pages и Type запись:
В частности, нет записи AcroForm , которая объединяет данные формы AcroForm. Таким образом, docCatalog.getAcroForm();
не может вернуть любую существующую структуру поля.
Просмотр последних Содержание Поток, например. страница 1, каждый видит
Q
q
Q
q
1 0 0 1 329.78 655.45 cm
/Xi5 Do
Q
q
Q
q
1 0 0 1 324.17 624.51 cm
/Xi8 Do
Q
q
Q
q
1 0 0 1 265.95 702.31 cm
/Xi10 Do
Q
q
Q
q
1 0 0 1 554.46 655.6 cm
/Xi17 Do
Q
...
Это типично для PDF, который раньше содержал определение формы AcroForm, которое затем было сведено в содержимое страницы, для каждого бывшего поля формы XObject (который ранее определял внешний вид аннотации виджета поля формы) теперь ссылается непосредственно из потока содержимого страницы.
Таким образом, единственный способ извлечь содержимое - это извлечь текст.
Очевидная проблема с извлечением текста состоит в том, что может быть трудно различить прежнее содержимое поля и текст статической формы, такой как метки. В зависимости от количества PDF-файлов, из которых вам нужно извлечь данные, возможно, стоит расширить PDFTextStripper
, чтобы добавить маркер для текста, извлеченного из некоторого содержимого XObject (в отличие от непосредственного содержимого страницы). Такие маркеры позволят вам достаточно хорошо дифференцироваться.