PDFBox 2.0.27:使用映射指定页面叠加文件添加水印无效
背景信息
我正在使用PDFBox 2.0.27,尝试为包含不同Din格式及横竖方向多页的PDF添加水印。为此,我针对每种Din格式与方向的组合创建了对应的PDF文件,用于为原PDF的对应页面添加水印。
实现方案
页面与叠加/水印文件的对应关系存储在HashMap<Integer, String> overlayGuide = new HashMap<>();中。添加水印的代码如下:
PDDocument originalPDF = PDDocument.load(new File("..Original_PDF.pdf")); // 需替换为实际路径 HashMap<Integer, String> overlayGuide = new HashMap<>(); overlayGuide.put(1, "..A1_Horizontal_Watermark.pdf"); // 需替换为实际路径 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();
该代码基于Stack Overflow的示例。
问题
水印添加未生效,输出文件与原PDF一致,且无任何异常或错误提示。当前版本PDFBox中不存在示例中的overlay.setOutputFile("final.pdf");方法。原PDF与水印PDF的页面尺寸和方向一致,通过Adobe Acrobat DC手动添加水印可正常生效。
预期结果
预期效果与通过Adobe Acrobat DC手动添加的水印一致,同时希望能设置水印PDF的opacity(透明度),但未在Overlay类中找到相关选项。
已尝试操作
使用上述代码,并通过搜索得到类似代码片段,但其他方案仅支持文本或图片水印。
内容的提问来源于stack exchange,提问作者SeeAZO
相关产品推荐
相关产品推荐

