在阅读了很多stackoverflow并尝试了很多解决方案后,我坚持这一点:
我收到的PDF无法更改,需要自动处理。 PDF是一个包含2个字段和提交按钮的PDF表单。 以下代码是关于我需要做的事情:
public static final String SRC = "C:\\Dev\\test.pdf";
public static final String DEST = "C:\\Dev\\test_result.pdf";
public static final String DATA = "C:\\Dev\\data.xml";
File file = new File(DEST);
PdfReader reader = new PdfReader(SRC);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(DEST));
AcroFields form = stamper.getAcroFields();
XfaForm xfa = form.getXfa();
xfa.fillXfaForm(new FileInputStream(DATA));
这给出了一个空指针:
Exception in thread "main" java.lang.NullPointerException
at com.itextpdf.text.pdf.XfaForm.fillXfaForm(XfaForm.java:1168)
at com.itextpdf.text.pdf.XfaForm.fillXfaForm(XfaForm.java:1146)
at com.itextpdf.text.pdf.XfaForm.fillXfaForm(XfaForm.java:1134)
at com.itextpdf.text.pdf.XfaForm.fillXfaForm(XfaForm.java:1131)
我可以使用以下代码获取并设置表单上的字段:
AcroFields fields = reader.getAcroFields();
fields.setField("pdfForm.loginUser", "myemail@domain.com");
fields.setField("pdfForm.loginPass", "mypassword");
如何将Acrofields转换为XfaForm?