当前位置: 首页 > 知识库问答 >
问题:

结合XFA和PDFBox

卫甫
2023-03-14

你知道是否可以用PDFBox填写PDF格式的表格吗?如果是的话,是否有代码示例或教程来实现这一点?若否,有何最佳选择可达致这个目标?

共有1个答案

澹台鸿光
2023-03-14

问题具体标识了主题中的PDFBox库;您不需要iText,XFA操作可以使用PDFBox1.8中提供的PDXFA对象完成。

非常感谢Maruan Sahyoun在PDFBox+XFA上的伟大工作。

此代码仅在删除PDDocument上的所有安全性时才起作用。
它还假设PDXFA中的COS对象是cosstream。下面的简化示例读取xml流并将其写回PDF。

 PDDocument doc = PDDocument.load("filename");
 doc.setAllSecurityToBeRemoved(true);

 PDDocumentCatalog docCatalog = doc.getDocumentCatalog();
 PDAcroForm form = docCatalog.getAcroForm();

 PDXFA xfa = form.getXFA();
 COSBase cos = xfa.getCOSObject();
 COSStream coss = (COSStream) cos;
 InputStream cosin = coss.getUnfilteredStream();
 Document document = documentBuilder.parse(cosin);

 COSStream cosout = new COSStream(new RandomAccessBuffer());
 OutputStream out = cosout.createUnfilteredStream();

 TransformerFactory tFactory = TransformerFactory.newInstance();
 Transformer transformer = tFactory.newTransformer();
 DOMSource source = new DOMSource(xmlDoc);
 StreamResult result = new StreamResult(out);
 transformer.transform(source, result);

 PDXFA xfaout = new PDXFA(cosout);
 form.setXFA(xfaout);
 类似资料:
  • 问题内容: 我想在CSS(或任何其他伪选择器)中结合使用。我基本上有一个列表,并且该类的项目具有使用施加的箭头形状。我希望对悬停的对象也是如此,但不能完全使其正常工作。继承人代码 问题答案: 只需以与选择器相同的方式将其追加到选择器即可:

  • 问题内容: 我目前的构建数量至少为10,因此我必须使用该库来实现。我已经设置了,但是我现在要添加一个,但是这需要扩展我的类,Java没有多个。我该怎么办? 问题答案: ListActivity尚未移植到AppCompat。可能是因为您应该认为它“已弃用”,而改用ListFragment。 片段将与ActionBarActivity一起使用,只需确保它们是支持库中的片段即可。 要通过读这大约片段的链

  • 问题内容: 我正在使用CodeIgniter编写的现有站点上工作,我们正在考虑将AngularJS用于需要大量前端功能的某些页面,但我们不想替换所有CodeIgniter视图(一次(尚未))。 因此,我单击了由angular的路由器控制的链接,该链接由javascript处理,但下一个链接可能是应由CodeIgniter框架处理的“正常”请求。 有两种结合这两种方法的优雅方法吗?我真的不介意一些额

  • 主要内容:示例YAML包括使用缩进范围的块集合。 在这里,每个条目都以一个新行开头。 集合中的块序列表示每个条目带有破折号和空格( )。 在YAML中,块集合样式不由任何特定指示符表示。 YAML中的块集合可以与其他标量数量区分开来,并且包含其中包含的键值对的标识。 映射是JSON结构中包含的键值的表示。 它经常用于多语言支持系统以及在移动应用程序中创建API。 映射使用键值对表示以及冒号和空格()的使用。 示

  • 问题内容: 好的,所以我正在学习I / O,并且在其中一张幻灯片中找到了以下代码。有人可以解释一下为什么需要FileWrite,BufferedWriter和PrintWriter吗?我知道BufferedWriter将缓冲输出并将其全部放入,但是为什么他们要使用FileWriter和PrintWriter?他们在错误处理等方面做得差不多吗? 而且为什么他们传递到? 问题答案: 大概他们之所以使用

  • 我有一个对不同后端系统进行大量调用的应用程序,并希望使用for-comprehensions来简化后端系统的流程。 我希望将AoseT(scalaz)和Future(scala 2.10)结合起来,这样我就可以捕获第一个潜在的错误(这是未来或后端系统问题),并向最终用户返回适当的消息。我已经快速浏览了一个 scalaz 验证,但捕获第一个错误(并非所有错误)的建议是使用 EitherT。 我首先在