首页 > 解决方案 > 使用 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);
}

标签: javapdfbox

解决方案


推荐阅读