我必须用一些数据填写PDF表格。此表单包含一些带有“添加”按钮的表格,该按钮用于向该表添加带有输入的新行,例如“FOREIGN PATENT DOCUMENTS”。 我需要使用iText在我的代码中“点击”这个按钮几次,添加必要的行,在那里获取输入名称并填充它们。我怎么能用iText做到这一点?有人可以给我一个代码示例吗?
我的PDF文件格式为https://drive.google.com/open?id=0BwtWU1543EbTQ3A3b2dZcW9qYk0
此文件已预定义,我无法重新生成它。
答案 0 :(得分:2)
你没有"点击"一个按钮编程。您只需提供必要的数据,表单就会适应。
请参阅FillXFA示例。我们有purchase_order.pdf,如下所示:
此文件有一个"添加项目"按钮添加更多行项目(如果需要,将导致创建更多页面)。如果有GUI,那么该按钮才有意义,但是当您以编程方式填写表单时,没有任何按钮可以推送。您只需向XML提供数据(例如data.xml),如下所示:
public void manipulatePdf(String src, String dest)
throws IOException, DocumentException {
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(XML));
stamper.close();
reader.close();
}
结果如下所示:purchase_order_filled.pdf
如您所见,添加了多行,而没有按任何按钮。
重要提示:我看到您有混合文档。我认为你应该把它变成纯XFA形式。如果您保留AcroForm字段,此代码将无法运行。