我正在尝试使用pdfbox来获取具有某些表单域的一页pdf(覆盖图),并将其覆盖在另一个pdf的每一页顶部。结果应具有仍是交互式的表单字段。叠加层还具有多个javascript操作以及文档级javascript。
到目前为止,我的尝试导致未使用表单元素或javascript的情况下应用了叠加层。我认为我找到了一种解决方法,可以在事后单独添加javascript。问题在于,JavaScript需要与不再存在的表单字段元素进行交互。
我尝试了几种不同的策略,尝试使用所有可能的类(overlay,util.overlay,layerUtility)。
为了阐明我的最终目标,以防万一,有一个更好的方法可以实现:我们目前正在使用另一种软件提前应用覆盖,并使用覆盖表单字段来覆盖内容根据我们应用于pdf的某些文档元数据,根据文档是否“过期”来显示或隐藏表单域的pdf和javascript。我们还使用javascript和form字段来执行由print操作触发的动态页眉和页脚。我正在寻找即时添加叠加层和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);
}