我有一个基于XFA的pdf表单,我们需要使用java填充 . 你能说出最好的方法吗?我能够使用iText为pdf生成xfa xml .
public void readXfa(String srcPdfFilename, String destXMLFilename) throws IOException, ParserConfigurationException, SAXException, TransformerFactoryConfigurationError, TransformerException {
PdfReader reader = new PdfReader(srcPdfFilename);
XfaForm xfa = new XfaForm(reader);
Document doc = xfa.getDomDocument();
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "yes");
FileOutputStream os = new FileOutputStream(destXMLFilename);
tf.transform(new DOMSource(doc), new StreamResult(os));
reader.close();
}
我有从上面的代码生成的Pdf和Xfa XML . 你能否建议我如何继续前进,因为我似乎没有想法 . 我试图检查XFA文档,但似乎不对 . 我没有xml,pdf非常复杂,因为它有很多字段,是一个动态的XFA pdf表单 .
非常感谢您的帮助和建议 .
1 回答
请看一下FillXFA示例 . 此示例具有包含动态表的表单(purchase_order.pdf):
现在我们添加data.xml,它是XML文件形式的一组数据,我们得到这个结果:purchase_order_filled.pdf
如您所见,添加了XML文件中存在的数据,以及许多空行(与XML中的空数据行相对应) . 当我们添加许多行时,我们甚至触发了一个新页面添加到PDF中 .
这就是它的完成方式:
这里有另一个例子:XfaMovies . xfa_movies.pdf文档是单页PDF,没有任何按钮 . 我们注入了120部电影的数据:movies.xml . 结果是23页PDF,xfa_filled_in.pdf .
NOTE: 读取您的代码,您将获得包含完整XFA流的XML . 您不知道为什么我添加了XML文件的链接:它们不包含任何特定于XFA的标记 .