如何在 Java 中使用 GroupDocs.Watermark 為 PDF 加上浮水印

在當今的數位環境中,如何為 PDF 加上浮水印 是開發安全文件工作流程的開發者常見的問題。無論是保護機密報告或為企業 PDF 加上品牌標誌,GroupDocs.Watermark 函式庫提供了一種乾淨且程式化的方式,在 Java 中新增與管理浮水印。本教學將帶領您完成 PDF 的載入、在特定構件中替換圖像,以及儲存最終的浮水印文件——同時兼顧效能與安全性。

快速回答

  • 哪個函式庫負責在 Java 中對 PDF 加浮水印? GroupDocs.Watermark for Java.
  • 我可以在 PDF 內替換圖像嗎? 可以,您可以針對單一構件並交換圖像。
  • 我需要授權嗎? 免費試用可用於測試;正式環境需購買完整授權。
  • 支援受密碼保護的 PDF 嗎? 完全支援——使用 PdfLoadOptions 提供密碼。
  • 如何儲存已修改的檔案? 呼叫 watermarker.save("output_path.pdf"),然後 close()

什麼是「如何為 PDF 加浮水印」?

為 PDF 加浮水印是指將可見或不可見的標記(例如標誌、文字或圖像)直接嵌入文件中。這可保護智慧財產權、強化品牌形象,並協助追蹤文件的分發情況。

為什麼要在 Java 中使用 GroupDocs.Watermark?

  • 完整控制 圖像與文字浮水印。
  • 輕鬆整合,可透過 Maven 或直接下載 JAR。
  • 強韌處理 受密碼保護及大型 PDF。
  • 效能導向 的 API,讓您批次處理文件。

前置條件

  • 已安裝 Java Development Kit (JDK) 8+
  • IDE(IntelliJ IDEA、Eclipse 或其他相似工具)。
  • 已將 GroupDocs.Watermark 函式庫 加入專案(請參考下方的 Maven 片段)。

設定 GroupDocs.Watermark(Java 版)

pom.xml 中加入儲存庫與相依性:

<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>

如果不想使用 Maven,可從 GroupDocs.Watermark for Java releases 下載最新的 JAR。

取得授權

從 GroupDocs 官方網站取得試用或正式授權。授權檔案可於執行時載入,以解鎖全部功能。

基本初始化與設定

以下為建立 Watermarker 實例所需的最小程式碼:

import com.groupdocs.watermark.Watermarker;

public class Main {
    public static void main(String[] args) throws Exception {
        Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.pdf");
        // Additional operations can be performed here.
        watermarker.close();
    }
}

使用 GroupDocs.Watermark 為 PDF 加浮水印

載入 PDF 文件

在進行任何浮水印或圖像替換之前,首先需要載入 PDF。

import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.options.PdfLoadOptions;

public class LoadPdfDocument {
    public static void run() throws Exception {
        PdfLoadOptions loadOptions = new PdfLoadOptions();
        Watermarker watermarker = new Watermarker("YOUR_DOCUMENT_DIRECTORY/document.pdf", loadOptions);
    }
}

說明:

  • PdfLoadOptions 讓您設定密碼處理、渲染選項等。
  • Watermarker 建構子接收檔案路徑與載入選項,提供即用的物件。

在特定構件中替換圖像

有時您需要在 PDF 頁面中替換現有圖像(例如過時的標誌)。以下程式碼示範如何鎖定第一頁的構件並交換其圖像。

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import com.groupdocs.watermark.Watermarker;
import com.groupdocs.watermark.contents.PdfArtifact;
import com.groupdocs.watermark.contents.PdfContent;
import com.groupdocs.watermark.contents.PdfWatermarkableImage;

public class ReplaceImageInArtifact {
    public static void run(Watermarker watermarker) throws Exception {
        PdfContent pdfContent = watermarker.getContent(PdfContent.class);
        File imageFile = new File("YOUR_DOCUMENT_DIRECTORY/test_image.png");
        byte[] imageBytes = new byte[(int) imageFile.length()];
        InputStream imageStream = new FileInputStream(imageFile);
        imageStream.read(imageBytes);
        imageStream.close();
        for (PdfArtifact artifact : pdfContent.getPages().get_Item(0).getArtifacts()) {
            if (artifact.getImage() != null) {
                artifact.setImage(new PdfWatermarkableImage(imageBytes));
            }
        }
    }
}

說明:

  • PdfContent 讓您存取整個 PDF 結構。
  • PdfArtifact 代表頁面上的每個可繪製元素;我們會篩選出包含圖像的構件。
  • 透過從位元組陣列建立新的 PdfWatermarkableImage,即可在不影響其他內容的情況下替換原始圖像。

儲存並關閉已加浮水印的 PDF 文件

完成修改後,將檔案寫入磁碟並釋放資源。

import com.groupdocs.watermark.Watermarker;

public class SaveAndCloseDocument {
    public static void run(Watermarker watermarker) throws Exception {
        watermarker.save("YOUR_OUTPUT_DIRECTORY/output_document.pdf");
        watermarker.close();
    }
}

說明:

  • save() 將修改後的 PDF 寫入您指定的位置。
  • close() 釋放記憶體及函式庫持有的檔案句柄。

實務應用

  • 安全文件分發: 在將 PDF 發送給外部合作夥伴前,將機密圖像替換為加浮水印的版本。
  • 品牌一致性: 透過單次批次作業自動更新所有企業 PDF 的標誌。
  • 法規報告: 在產生的報告中插入合規印章或更新的圖形。
  • 文件管理系統整合: 將浮水印流程掛接至文件管理系統,以自動執行政策。

效能考量

  • 記憶體管理: 完成後務必關閉串流(InputStreamWatermarker)。
  • 批次處理: 大量文件時,對每個文件建立單一 Watermarker,盡可能重複使用物件。
  • 非同步操作: 可考慮將載入/儲存步驟放在其他執行緒,或使用 Java 的 CompletableFuture 以保持 UI 響應。

常見問題

Q:我可以為受密碼保護的 PDF 加浮水印嗎?
A:可以。在載入前透過 PdfLoadOptions.setPassword("yourPassword") 提供密碼。

Q:在單一 PDF 中替換圖像的數量有上限嗎?
A:沒有硬性上限,但極大型 PDF 可能需要更多記憶體;必要時可分批處理。

Q:開發版需要授權嗎?
A:免費試用授權可用於評估;正式部署則需完整授權。

Q:GroupDocs.Watermark 與僅添加簡單覆蓋圖像有何不同?
A:此函式庫會將圖像嵌入 PDF 的內容流,成為文件的一部分,而非可輕易移除的獨立圖層。

Q:我可以在同一文件中同時使用文字與圖像浮水印嗎?
A:當然可以。在同一個 Watermarker 工作階段中同時使用 TextWatermarkImageWatermark


最後更新: 2026-01-29
測試版本: GroupDocs.Watermark 24.11
作者: GroupDocs