#pdfbox
#pdfbox
Вопрос:
У меня есть этот объединенный PDF-файл только с Acroform.
И я хочу добавить к нему водяной знак.
Я добавляю watermark_1.pdf на страницу 1,3,5
Я добавляю watermark_2.pdf на страницу 2,4,6
И это хорошо работает с этим кодом:
PDDocument doc = PDDocument.load(new File(filePath));
HashMap<Integer, String> overlayGuide = new HashMap<Integer, String>();
for (int i = 0; i < doc.getNumberOfPages(); i = i 2) {
overlayGuide.put(i 1, FOLDER "watermark_1.pdf");
overlayGuide.put(i 2, FOLDER "watermark_2.pdf");
}
Overlay overlay = new Overlay();
overlay.setInputPDF(doc);
overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
overlay.overlay(overlayGuide);
doc.save(new File(filePath));
Но этот способ заставит меня разделить мой водяной знак на два файла, в то время как мой исходный водяной знак находится в одном файле см. watermark_2pages.pdf.
Мой вопрос, возможно ли настроить наложение PDFBox и использовать watermark_2pages.pdf.pdf и применить его непосредственно к странице 1 и 2 моей формы (т. Е. без наличия двух PDF-файлов с водяными знаками)?
Комментарии:
1. Кстати, вам не нужно создавать такую карту, вы можете просто использовать
setOddPageOverlayFile
иsetEvenPageOverlayFile
и использовать пустую карту…2. @mkl спасибо, это не мой вопрос. Да, здесь я могу использовать четный и нечетный, но иногда у меня может быть водяной знак примерно на 4 страницах …. вот почему мне нужен oberlayGuide, первоначальный вопрос таков: как я могу сохранить свой водяной знак в одном файле и добавить в overlay для страницы 1 добавить водяной знак.pdf (страница 1) для страницы 2 добавить водяной знак.pdf (страница 2) это моя проблема. Я хочу избежать разделения моего водяного знака в нескольких файлах
3. Попробуйте
setAllPagesOverlayPDF
илиsetAllPagesOverlayFile
, это делает то, что вы хотите?4. Вы написали «кажется, работает» и «без реального подтверждения от вас это раньше не работало» — так это работает или нет? При взгляде на исходный код вы должны передать пустую карту, а не null. Если вы передадите значение null, вы получите NPE.
5. Поскольку другого метода, очевидно, нет 🙂 Я предлагаю вам ответить на вопрос самостоятельно, я на самом деле не вкладывал в это много усилий. Но я улучшу документацию.