使用pdfbox在所有页面上覆盖acroForm

时间:2018-12-10 22:39:46

标签: java pdfbox

我正在尝试使用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);
}

0 个答案:

没有答案