背景信息
我正在使用PDFBox 2.0.27,并尝试在我的PDF (五月)上添加水印,其中包含不同Din格式和方向(垂直和横向)的多个页面。
由于这个原因,我为Din格式和方向的每一个组合创建了一个PDF文件,我想使用它作为原始PDF的各个页面的水印。
逼近
特定的页面和叠加/水印文件关系存储在HashMap<Integer, String> overlayGuide = new HashMap<>();中。
对于向每一页添加水印,我使用以下代码:
PDDocument originalPDF = PDDocument.load(new File("..Original_PDF.pdf")); // To adjust with actual path
HashMap<Integer, String> overlayGuide = new HashMap<>();
overlayGuide.put(1, "..A1_Horizontal_Watermark.pdf"); // To adjust with actual path
Overlay overlay = new Overlay();
overlay.setInputPDF(originalPDF);
overlay.setOverlayPosition(Overlay.Position.BACKGROUND);
originalPDF = overlay.overlay(overlayGuide);
originalPDF.save(new File("C:\\AxaviaPdfServiceAPI\\temp\\watermarked.pdf"));
overlay.close();源代码代码片段
此代码基于来自这里的建议代码。
问题
水印不起作用。上面的代码生成的输出是原始的PDF。我没有收到任何例外,错误或其他提示,我可以提供。
我遗漏了什么?在链接堆栈溢出问题中发布的方法overlay.setOutputFile("final.pdf");在我当前使用的PDFBox版本中不可用。
原始PDF和水印PDF的页面大小和方向相同(/should be)。通过Acrobat手动添加水印正在工作。
预期结果
基于通过Acrobat手动添加,我期望类似于这里
不幸的是,我在Overlay类中找不到一个选项来设置不透明来添加水印PDF。
我试过什么
请参阅上面的代码片段& googeling,这导致了大致相同的代码片段。其他解决方案只处理简单的文本作为水印或图像。
示例文件
测试我的代码的示例文件可以找到这里
边界条件
我想坚持模板PDF的水印,因为我想添加更多的图标/图片。提供的示例文件只是一个简短的草稿。
更新2022-11-06
请共享测试的输入和输出PDF。- mkl
原件:这里
水印PDF:这里
结果PDF:这里
任何帮助都是非常感谢的。提前谢谢你。
发布于 2022-11-07 07:35:57
感谢mkl的指出,HashMap<Integer, String> overlayGuide = new HashMap<>();的方法目前已经被窃听了。
Solution/Work-around
我使用了overlay.overlayDocuments(overlayGuidePDDocuments);方法和overlayGuidePDDocuments = HashMap<Integer, PDDocument>,现在正确设置了水印。
备注
设置水印模板PDF的不透明度是不可能的(或者我不知道如何应用)。因此,水印模板PDF的制备具有不透明度。
https://stackoverflow.com/questions/74319965
复制相似问题