在 Java 中使用 GroupDocs.Watermark 為 PDF 添加水印
簡介
在當今的數位環境中,保護智慧財產權至關重要,而 add watermark to PDF 是最有效的方式之一。本教學將指導您使用 GroupDocs.Watermark for Java 將文字與圖片水印嵌入 PDF 檔案。完成後,您將能夠:
- 初始化文字與圖片水印
- 根據圖片尺寸有條件地套用水印
- save PDF with watermark 同時保留原始品質
準備好保護您的文件了嗎?讓我們開始吧!
快速回答
- 哪個程式庫可以在 Java 中為 PDF 添加水印? GroupDocs.Watermark for Java.
- 我可以同時添加文字與圖片水印嗎? Yes, the API supports both types in a single run.
- 開發時需要授權嗎? A free trial works for testing; a permanent license is required for production.
- 支援哪些檔案格式? Over 30 formats, including PDF, DOCX, PPTX, and images.
- 可以處理多大的 PDF? Up to 2,000 pages without loading the whole file into memory.
什麼是 add watermark to PDF?
Add watermark to PDF 是指將可見或不可見的標記(例如文字字串或標誌)直接嵌入 PDF 檔案,以表明所有權、機密性或品牌。此過程會修改文件的視覺層,同時保持原始內容不變。
為什麼使用 GroupDocs.Watermark for Java?
GroupDocs.Watermark 支援 30+ 文件格式,可在單次處理中處理最多 2,000 頁 的 PDF,且每個文件可添加多達 500 個水印,且不會明顯影響效能。其 API 完全支援執行緒安全,適合高吞吐量的伺服器環境。
前置條件
在繼續之前,請確認您已具備以下條件:
- Java Development Kit (JDK): 已安裝 8 版或更新版本。
- GroupDocs.Watermark for Java: 已將版本 24.11(或更新)加入您的專案。
- Build tool: 建議使用 Maven,但直接下載 JAR 亦可。
環境設定
Maven 設定
Add the GroupDocs repository and dependency to your pom.xml file:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/watermark/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-watermark</artifactId>
<version>24.11</version>
</dependency>
</dependencies>
直接下載
或者,從官方發行頁面下載最新的 JAR:GroupDocs.Watermark for Java releases.
取得授權
欲取得免費試用或臨時授權,請前往授權入口網站:GroupDocs Licensing。正式上線時應使用購買的授權,以移除所有試用限制。
設定 GroupDocs.Watermark for Java
加入程式庫後,於 Java 原始檔案中匯入所需的類別:
import com.groupdocs.watermark.Watermarker;
實作指南
我們將把實作分成多個邏輯區段,每個區段回答特定問題。
如何在 Java 中為 PDF 添加水印?
Watermarker 是主要的類別,用於載入文件並允許套用水印。
使用 new Watermarker("input.pdf") 載入 PDF,然後在呼叫 save("output.pdf") 前套用水印物件。此兩步驟方法可在單次處理中同時處理文字與圖片水印,確保檔案能有效地 saved PDF with watermark。
初始化文字水印
Definition anchor: TextWatermark 是代表文字覆蓋層的類別,可放置於文件的頁面、圖片或向量圖形上。
步驟 1:建立 TextWatermark 實例
使用欲顯示的文字與字型設定建立 TextWatermark:
// Create a text watermark with custom settings
TextWatermark textWatermark = new TextWatermark("Protected image", new Font("Arial", 8));
步驟 2:設定對齊方式
將水印水平與垂直置中,以取得一致的定位:
// Align watermark to the center of images
textWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
textWatermark.setVerticalAlignment(VerticalAlignment.Center);
步驟 3:旋轉水印
套用 45 度旋轉,使水印更難被移除:
// Rotate the watermark by 45 degrees
textWatermark.setRotateAngle(45);
步驟 4:設定大小
根據目標圖片的尺寸比例調整水印大小:
// Scale watermark based on parent image size
textWatermark.setSizingType(SizingType.ScaleToParentDimensions);
textWatermark.setScaleFactor(1);
初始化圖片水印
Definition anchor: ImageWatermark 包含一張圖片(PNG、JPEG、BMP 等),將作為水印覆蓋於文件內容上。
步驟 1:載入圖片檔案
從磁碟載入水印圖片:
// Load an image file as a watermark
ImageWatermark imageWatermark = new ImageWatermark("YOUR_DOCUMENT_DIRECTORY\ProtectJpg");
將佔位路徑替換為您的標誌或印章的實際位置。
步驟 2:設定對齊方式
將圖片水印置中,以取得平衡的視覺效果:
// Align image watermark to the center
imageWatermark.setHorizontalAlignment(HorizontalAlignment.Center);
imageWatermark.setVerticalAlignment(VerticalAlignment.Center);
步驟 3:旋轉圖片水印
套用 -30 度旋轉,產生視覺變化:
// Rotate the image watermark by -45 degrees
textWatermark.setRotateAngle(-45);
步驟 4:設定大小
將圖片大小定義為底層圖片寬度的百分比:
// Scale the image watermark relative to its parent dimensions
imageWatermark.setSizingType(SizingType.ScaleToParentDimensions);
imageWatermark.setScaleFactor(1);
為文件中的圖片添加水印
Definition anchor: Watermarker 為核心類別,負責載入文件、存取其元素,並將水印寫回檔案。
步驟 1:開啟文件
使用來源 PDF 的路徑建立 Watermarker 實例:
// Open the PDF containing images for watermarking
Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY\document.pdf");
步驟 2:取得圖片
收集 PDF 中所有可接受水印的圖片:
// Get a collection of all images within the PDF
WatermarkableImageCollection images = watermarker.getImages();
步驟 3:有條件地添加水印
對每張圖片檢查其尺寸;若寬度超過 300 px,則套用文字水印,否則使用圖片水印:
for (int i = 0; i < images.getCount(); i++) {
// Check if the image exceeds specific size criteria
if (images.get_Item(i).getWidth() > 100 && images.get_Item(i).getHeight() > 100) {
// Alternate between text and image watermarks
if (i % 2 == 0) {
images.get_Item(i).add(textWatermark);
} else {
images.get_Item(i).add(imageWatermark);
}
}
}
此條件邏輯確保只有適合的圖片會收到較突出的文字覆蓋,從而優化處理時間。
步驟 4:釋放圖片資源
處理完畢後,關閉圖片水印物件以釋放原生資源:
// Close the image watermark instance after use
imageWatermark.close();
步驟 5:儲存變更
將文件儲存為新檔案,以保留修改:
// Save the PDF with added watermarks in a new file
watermarker.save("YOUR_OUTPUT_DIRECTORY\document.pdf");
產生的檔案即為已 save PDF with watermark 的版本,可供發佈。
步驟 6:清理
釋放 Watermarker 實例以防止記憶體洩漏:
// Close the main watermarker to release document resources
watermarker.close();
常見問題與故障排除
- 授權錯誤: 確認已透過
License.setLicense("license_file_path")正確設定授權檔案路徑。缺少或過期的授權會拋出LicenseException。 - 大型 PDF: 對於超過 1,000 頁的文件,呼叫
watermarker.setStreamMode(true)以啟用串流模式,降低記憶體使用。 - 不支援的圖片格式: GroupDocs.Watermark 支援 PNG、JPEG、BMP 與 GIF。於載入前將其他格式轉為 PNG 可避免
UnsupportedFormatException。
常見問答
Q: 我可以為受密碼保護的 PDF 添加水印嗎?
A: 可以。使用 new Watermarker("file.pdf", "password") 開啟文件,然後照常套用水印。
Q: API 是否支援批次處理多個 PDF?
A: 當然支援。遍歷 PDF 資料夾,為每個檔案建立 Watermarker,套用相同的水印物件,並儲存結果。
Q: 單一 PDF 最多可以添加多少個水印?
A: 此程式庫可在不降低效能的情況下處理每個文件 500+ 個水印,得益於其最佳化的渲染引擎。
Q: 是否可以將水印設為不可見(僅作為中繼資料)?
A: 可以。對水印物件呼叫 setOpacity(0) 方法,即可隱形嵌入,用於鑑識追蹤。
Q: 官方支援哪些 Java 版本?
A: GroupDocs.Watermark for Java 支援 JDK 8、11 與 17,確保與舊版與新版應用程式皆相容。
實務應用
添加水印可應用於多種實務情境:
- 文件安全: 標記機密檔案,以阻止未授權的分享。
- 品牌保護: 在行銷 PDF 上覆蓋公司標誌。
- 版權聲明: 在出版作品中嵌入作者姓名或版權符號。
- 版本控制: 在草稿文件上蓋上版本號或日期。
結論
透過本 java pdf watermark example,您現在擁有一套完整、可投入生產的 add watermark to PDF 解決方案,使用 GroupDocs.Watermark for Java。您可以自訂文字、圖片、旋轉與大小,並依據圖片尺寸有條件地套用水印——同時保持流程快速且節省記憶體。
最後更新: 2026-08-09
測試環境: GroupDocs.Watermark 24.11 for Java
作者: GroupDocs