首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >填充动态XFA pdf格式

填充动态XFA pdf格式
EN

Stack Overflow用户
提问于 2014-07-01 10:45:49
回答 1查看 3.9K关注 0票数 3

我有一个基于XFA的pdf表单,我们需要使用java进行填充。你能建议最好的方法吗。我能够使用iText为pdf生成xfa。

代码语言:javascript
复制
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格式。

我们将衷心感谢您的帮助和建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-01 11:12:55

请看一下FillXFA示例。此示例有一个表单(order.pdf),它包含一个动态表:

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

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

这是怎么做到的:

代码语言:javascript
复制
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();
}

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

注意:读取代码的将得到一个包含完整XFA流的。你不需要这个,你只需要数据。这就是为什么我将链接添加到XML文件中:它们不包含任何特定于XFA的标记。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24508342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档