Неясно на 100%, какие данные вы хотите извлечь, поэтому я предоставлю два варианта:
1) Вы хотите извлечь текст static из PDF (Для этого решения требуется pdfXFA , используя метод flatten ):
public void readXFA() throws IOException, InterruptedException {
final XFAFlattener xfaFlattener = new XFAFlattener();
xfaFlattener.flatten(new FileInputStream(INPUT_XFA),
new FileOutputStream(FLATTENED));
final PdfDocument doc = new PdfDocument(new PdfReader(FLATTENED));
String textFromPage = PdfTextExtractor.getTextFromPage(doc.getPage(1));
System.out.println(textFromPage);
}
, этот код сначала сгладит вашу форму, а затем использует ваш код на сглаженном PDFфайл.
2) Вы хотите извлечь данные, которые были заполнены в форме (для этого вам нужен только iText 7 Core, а метод getXfaFieldValue ):
public void readXFA() throws IOException {
final String INPUT_XFA = "c:\\temp\\imm5562e.pdf";
try (PdfDocument pdf = new PdfDocument(new PdfReader(INPUT_XFA))) {
XfaForm xfaForm = PdfAcroForm.getAcroForm(pdf, false).getXfaForm();
System.out.println(xfaForm.getXfaFieldValue("TextField2"));
}
}
Технически, я думаю, вы можете использовать первый подход для извлечения обоих данных, но тогда вы потеряете способность XFA извлекать данные из формы.