我有一個PDF文件,其中包含一些需要從Java代碼填寫的表單字段。我使用PDFBox的庫這個,還有這個代碼:使用PDFBox填充PDF表格不起作用
PDDocument pdfDoc = PDDocument.load("C:\\Users\\igor\\Desktop\\test.pdf");
PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField("applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
if (field != null) {
field.setValue("Milan");
} else {
System.err.println("No field found with name:" + "applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
}
pdfDoc.save("C:\\Users\\igor\\Desktop\\testout.pdf");
pdfDoc.close();
不是由我創建的PDF,所以我不知道是什麼類型的表單文件使用(如果我理解正確的話,還有FDF和XFA形式)。由於PDF是不是我創造,我用這個工具http://support.persits.com/pdf/demo_formfields.asp找出表單字段的名稱,它給了我這樣的:
applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]
當我使用這個長字段名,我不明白任何錯誤,但生成的PDF不包含我在該字段中輸入的值。我認爲也許這個字段名稱有問題,所以我使用Pdftk tool,這個字段名稱只是txtFirstName
。但是當我使用這個,我得到了No field found with name: txtFirstName
錯誤。幫幫我?
該字段名稱暗示它是一個XFA字段。也許你必須在PDFBox中以不同的方式處理XFA字段? (我根本不知道PDFBox API ...) – mkl