Наложите acroForm на все страницы с помощью pdfbox - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь использовать pdfbox, чтобы взять одностраничный pdf (оверлей), который имеет некоторые поля формы, и наложить его поверх каждой страницы другого pdf.Результат должен иметь поля формы, которые все еще являются интерактивными.Оверлей также имеет несколько действий javascript, а также javascript уровня документа.

Мои попытки привели к тому, что наложение было применено без элементов формы и JavaScript.Я думаю, что нашел способ обойти javascript, добавив его отдельно после этого.Проблема в том, что он должен взаимодействовать с элементами поля формы, которых больше нет.

Я испробовал несколько разных стратегий, пытаясь использовать все классы, которые мог (overlay, util.overlay, layerUtility).

В попытке уточнить мою конечную цель на случай, если есть лучший способ ее достижения: в настоящее время мы используем другое программное обеспечение, чтобы досрочно применить наложение и используем поля формы наложения для покрытиявверх содержимое pdf и javascript для отображения или скрытия полей формы в зависимости от того, истек ли срок действия документа в соответствии с некоторыми метаданными документа, которые мы применили к pdf.Мы также используем поля 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);
}
...