背景資料
我正在使用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");鏈接的stackoverflow問題中發布的方法在我當前使用的PDFBox版本中不可用。
原始 PDF 和水印 PDF 的頁面大小和方向(/應該)相同。通過 Adob??e Acrobat DC 手動添加水印正在作業。
預期結果
基于通過 Adob??e Acrobat DC 手動添加,我期望像這里
Overlay不幸的是,我在課堂上找不到為要添加的水印 PDF設定不透明度的選項。
我試過的
請參閱上面的代碼片段和谷歌搜索,這導致或多或少相同的代碼片段。其他解決方案僅將簡單文本處理為水印或影像。
示例檔案
可以在這里找到測驗我的代碼的示例檔案
邊界條件
我想堅持使用模板 PDF 進行水印,因為我想添加其他圖示/圖片。提供的示例檔案只是一個簡短的草稿。
2022-11-06 更新
請分享您的測驗的輸入和輸出 PDF。– mkl
原始PDF:這里
水印PDF:這里
結果PDF:這里
任何幫助表示贊賞。先感謝您。
uj5u.com熱心網友回復:
感謝mkl指出,該方法HashMap<Integer, String> overlayGuide = new HashMap<>();目前存在錯誤。
解決方案/解決方法
我使用了該方法overlay.overlayDocuments(overlayGuidePDDocuments);,overlayGuidePDDocuments = HashMap<Integer, PDDocument>現在水印設定正確。
評論
無法為水印模板 PDF 設定不透明度(或者我不知道如何應用)。因此,水印模板 PDF 準備了不透明度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/529226.html
