java - 使用 pdfbox 在所有页面上覆盖 acroForm
问题描述
我正在尝试使用 pdfbox 获取具有一些表单字段的单页 pdf(覆盖)并将其覆盖在另一个 pdf 的每一页之上。结果应该具有仍可交互的表单字段。叠加层还具有几个 javascript 操作以及文档级 javascript。
到目前为止,我的尝试导致在没有表单元素和 javascript 的情况下应用了覆盖。我想我已经找到了一种解决javascript问题的方法,事后单独添加它。问题是他的 javascript 需要与不再存在的表单字段元素进行交互。
我尝试了几种不同的策略,尝试使用我可以使用的所有类(overlay、util.overlay、layerUtility)。
为了澄清我的最终目标,以防有更好的方法来实现它:我们目前正在使用另一个软件来提前应用覆盖,并使用覆盖表单字段来覆盖 pdf 的内容以及根据我们应用于pdf的一些文档元数据,根据文档是否“过期”来显示或隐藏表单字段的javascript。我们还使用 javascript 和表单字段来执行由打印操作触发的动态页眉和页脚。我正在寻找更多即时添加覆盖和javascript的方法。
我目前正在尝试坚持使用 1.8.x,因为我们已经在我们项目的其他一些库中拥有它。
谢谢你的帮助!
感觉最正确的尝试。它添加了覆盖但没有表单字段:
public static void main(String[] args) throws Exception {
PDDocument pdf = null;
try {
System.out.println("argument:" + args[0]);
pdf = PDDocument.load(new File(args[0]));
addOverlay(pdf); //flattens overlay, fields lost.
pdf.save("output.pdf");
pdf.close();
} finally {
if (pdf != null) {
pdf.close();
}
}
return;
}
private static void mergeOverlay(final PDDocument pdf) throws IOException {
PDDocument overlayPDF = PDDocument.load(new File("overlay.pdf"));
Overlay overlay = new Overlay();
overlay.overlay(overlayPDF, pdf);
}
解决方案
推荐阅读
- ios - 当点击collectionView单元格内的按钮时,如何从tableViewCell内的collectionView获取表视图行并推送到viewController
- sublimetext3 - 如何使用德语键盘注释代码块
- html - 让不同 div 中的两个段落对齐
- terminal - 在终端(Ubuntu)中仅显示请求的包(apt、apt-get、dpkg)
- javascript - 在编辑输入数字格式时保留撤消功能
- reactjs - 如何在反应中重新呈现相同的组件页面?
- java - 一对多映射关系未正确保存数据
- docker - 如何列出所有容器的 docker 日志大小?
- spring-boot - 假装下载文件
- javascript - Prisma:如何根据非唯一列查询记录