gpt4 book ai didi

java - 填充动态 XFA pdf 表单 itext

转载 作者:行者123 更新时间:2023-11-30 08:22:20 29 4
gpt4 key购买 nike

我有一个基于 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 格式。

我们将真诚地感谢您的帮助和建议。

最佳答案

请看FillXFA例子。此示例有一个包含动态表的表单 ( purchase_order.pdf):

enter image description here

现在我们添加 data.xml ,这是一组 XML 文件形式的数据,我们得到这个结果:purchase_order_filled.pdf

enter image description here

如您所见,添加了 XML 文件中的数据,以及一些空行(对应于 XML 中的空数据行)。当我们添加许多行时,我们甚至触发了一个要添加到 PDF 的新页面。

是这样的:

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();
}

这里还有另一个例子:XfaMovies . xfa_movies.pdf文档是没有任何按钮的单页 PDF。我们注入(inject)了 120 部电影的数据:movies.xml .结果是 23 页的 PDF,xfa_filled_in.pdf .

注意:阅读您的代码,您将获得包含完整 XFA 流的 XML。你不需要那个,你只需要数据。这就是我将链接添加到 XML 文件的原因:它们不包含任何 XFA 特定标签。

关于java - 填充动态 XFA pdf 表单 itext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24508342/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com