Я пытаюсь использовать 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);
}