如何使用 Java 和 GroupDocs Annotation 在 PDF 中加入圖片

你有沒有曾經盯著 PDF 看,心想「如果我能在這裡加入圖片就能更好說明了」?你並不孤單。無論你是在構建文件審核系統、製作教學教材,或只是需要在 PDF 中加入視覺說明,圖片註解都是一個改變遊戲規則的功能。

在本教學中,你將學會如何使用 GroupDocs.Annotation for Java 加入圖片 到 PDF 檔案。我們會涵蓋設定、基本用法、如不透明度與旋轉等進階屬性,以及常見的陷阱。完成後,你將能自信地以程式方式將圖片嵌入 PDF。

快速解答

  • 我可以使用 Java 在 PDF 中加入圖片嗎? 是的 – 使用 GroupDocs.Annotation 的 ImageAnnotation 類別。
  • 哪個函式庫支援圖片不透明度? setOpacity 方法讓你控制不透明度(set image opacity java)。
  • 我需要授權嗎? 試用版可用於測試;正式環境需要完整授權。
  • 我可以在受密碼保護的 PDF 上加註嗎? 可以,只需在建立 Annotator 時提供密碼。
  • 需要哪個 Java 版本? Java 8 以上,建議使用 Java 11 以上以獲得最佳效能。

什麼是 加入圖片

在 PDF 中加入圖片是指將視覺元素(如標誌、圖表、印章等)作為註解插入,成為文件內容流的一部分。GroupDocs.Annotation 將圖片視為 ImageAnnotation,讓你完整控制其位置、大小、旋轉與不透明度。

為什麼使用 GroupDocs Annotation for Java?

  • 功能豐富的 API – 完整的屬性集合(位置、不透明度、旋轉)。
  • 跨平台 – 可在 Windows、Linux 與 macOS 上運行。
  • 不需外部 PDF 檢視器 – 函式庫自行處理渲染與儲存。
  • 企業級授權 – 提供試用、臨時與完整授權選項。

前置條件

  • Java 8 或以上(建議使用 Java 11+)。
  • IDE – IntelliJ IDEA、Eclipse 或任何相容 Java 的編輯器。
  • 建置工具 – Maven 或 Gradle(範例使用 Maven)。

設定 GroupDocs.Annotation

在你的 pom.xml 中加入 Maven 倉庫與相依性:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/annotation/java/</url>
   </repository>
</repositories>
<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-annotation</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

小技巧: 請隨時在 GroupDocs 發行頁面確認最新版本。Version 25.2 為 2025 年初的最新版本,但更新的版本可能加入新功能。

授權(千萬別跳過!)

你有三種選擇:

  1. 免費試用 – 適合測試 – 從 GroupDocs 試用頁面 取得。
  2. 臨時授權 – 需要更長的評估時間?點此取得 here
  3. 完整授權 – 正式環境使用 – 可於 購買頁面 取得。

入門 – 首個圖片註解

步驟 1:初始化 Annotator

Annotator 類別是你的入口點。它會開啟 PDF 並為修改做準備。

try (final Annotator annotator = new Annotator("YOUR_DOCUMENT_DIRECTORY/input.pdf")) {
    // Your annotation magic happens here
}

為什麼使用 try‑with‑resources? 它保證在使用完畢後關閉 annotator 並釋放檔案句柄,避免記憶體洩漏。

步驟 2:建立與設定圖片註解

以下是一個最小化的 ImageAnnotation 設定範例。你需要定義矩形、不透明度、頁碼、圖片來源與旋轉角度。

// Initialize the image annotation
class ImageAnnotation {
    public void setBox(Rectangle rectangle) { /* Implementation */ }
    public void setOpacity(double opacity) { /* Implementation */ }
    public void setPageNumber(int pageNumber) { /* Implementation */ }
    public void setImagePath(String imagePath) { /* Implementation */ }
    public void setAngle(double angle) { /* Implementation */ }
}

// Create your image annotation
ImageAnnotation imageAnnotation = new ImageAnnotation();

// Position and size (x, y, width, height in pixels)
imageAnnotation.setBox(new Rectangle(100, 100, 100, 100));

// Make it 70% opaque (0.0 = transparent, 1.0 = fully opaque)
imageAnnotation.setOpacity(0.7);

// Place it on the first page (0‑indexed)
imageAnnotation.setPageNumber(0);

// Your image source (can be local file or URL)
imageAnnotation.setImagePath("www.google.com.ua/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png");

// Rotate it 100 degrees (because why not?)
imageAnnotation.setAngle(100.);

了解 RectangleRectangle(100, 100, 100, 100) 表示「從左上角的 (100, 100) 開始,建立一個 100 × 100 像素的方框」。請依需求調整這些數值以符合版面配置。

步驟 3:套用註解並儲存

現在將註解附加至文件,並將結果寫入磁碟。

// Add the annotation to your document
annotator.add(imageAnnotation);

// Save the annotated PDF
annotator.save("YOUR_OUTPUT_DIRECTORY/result_image_annotation.pdf");

就這樣 – 你已成功 加入圖片 到 PDF。

常見問題與解決方案

檔案路徑問題

  • 症狀: FileNotFoundException 或空白圖片。
  • 解決方法: 使用絕對路徑或確認 URL 可存取。
// Bad: relative path that may fail
imageAnnotation.setImagePath("images/logo.png");

// Good: absolute path
imageAnnotation.setImagePath("/full/path/to/your/images/logo.png");

圖片尺寸與品質

  • 症狀: 圖片像素化或過大。
  • 解決方法: 使圖片尺寸與註解矩形相符。
// Rectangle is 200 × 200, so use an image at least that size
imageAnnotation.setBox(new Rectangle(50, 50, 200, 200));

大型 PDF 的記憶體問題

  • 症狀: OutOfMemoryError
  • 解決方法: 分批處理文件,並保持圖片檔案輕量化。

何時 使用圖片註解 PDF

  • 法律文件: 直接在合約上附加事故照片或簽名。
  • 教學教材: 在練習紙上插入圖表或示意圖。
  • 技術手冊: 加入螢幕截圖或架構圖。
  • 品質管制: 在檢驗報告中嵌入缺陷照片。

效能最佳實踐

最佳化圖片來源

// Avoid huge files
imageAnnotation.setImagePath("massive_10mb_image.png");

// Resize to match annotation box (e.g., 100 × 100)

批次處理策略

List<String> pdfFiles = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");

for (String pdfFile : pdfFiles) {
    try (final Annotator annotator = new Annotator(pdfFile)) {
        ImageAnnotation annotation = createImageAnnotation();
        annotator.add(annotation);
        annotator.save("annotated_" + pdfFile);
    }
}

資源管理

// Good – automatically closes resources
try (final Annotator annotator = new Annotator("input.pdf")) {
    // Your code here
}

// Bad – might cause memory leaks
Annotator annotator = new Annotator("input.pdf");
// ... do stuff ...
// Forgot to close!

進階設定技巧

動態定位

// Bottom‑right corner placement (assuming standard Letter size)
int pageWidth = 612;   // points
int pageHeight = 792;  // points
int imageSize = 50;

Rectangle dynamicPosition = new Rectangle(
    pageWidth - imageSize - 10,   // 10 px margin from right
    pageHeight - imageSize - 10,  // 10 px margin from bottom
    imageSize,
    imageSize
);

imageAnnotation.setBox(dynamicPosition);

單頁多圖

// Add a logo
ImageAnnotation logo = new ImageAnnotation();
logo.setBox(new Rectangle(50, 50, 100, 50));
logo.setImagePath("company_logo.png");
logo.setPageNumber(0);

// Add an approval stamp
ImageAnnotation stamp = new ImageAnnotation();
stamp.setBox(new Rectangle(400, 700, 100, 50));
stamp.setImagePath("approved_stamp.png");
stamp.setPageNumber(0);

annotator.add(logo);
annotator.add(stamp);

常見問答

Q: 我能使用的圖片最大尺寸是多少?
A: 沒有硬性上限,但為了最佳效能,請將圖片大小控制在 2 MB 以下。

Q: 我可以使用動畫 GIF 嗎?
A: GroupDocs 只會渲染動畫 GIF 的第一幀。

Q: 我要如何精確定位圖片?
A: GroupDocs 以左上角為原點;Rectangle 的座標是以像素為單位從該點測量。

Q: 我可以在受密碼保護的 PDF 上加註嗎?
A: 可以 – 在建立 Annotator 時提供密碼。

Q: 這適用於所有 PDF 版本嗎?
A: 支援的 PDF 版本範圍為 1.4 至 2.0,幾乎涵蓋所有你會遇到的 PDF。

疑難排解清單

  1. 授權有效嗎? 檢查試用、臨時或完整授權狀態。
  2. 檔案路徑正確嗎? 確認輸入的 PDF 與圖片路徑存在。
  3. 權限是否正確? 讀取輸入檔案的權限,寫入輸出檔案的權限。
  4. 支援的圖片格式? 請使用 PNG、JPG 或 GIF。
  5. 頁碼有效嗎? 記得頁碼是從 0 開始計算。
  6. Rectangle 座標合理嗎? 避免負值或超出範圍的座標。

結語

現在你已具備使用 GroupDocs.Annotation for Java 加入圖片 到 PDF 檔案的堅實基礎。請記得:

  • 使用 try‑with‑resources 以確保資源正確釋放。
  • 最佳化圖片尺寸,使 PDF 保持輕量。
  • 使用絕對路徑測試,以避免路徑相關錯誤。
  • 選擇適合的不透明度與旋轉角度,以符合你的視覺設計。

下一步: 探索其他註解類型(文字、形狀、標註)或將此邏輯整合至 Spring Boot 服務,以即時處理 PDF。

文件位於 docs.groupdocs.com,其中有更多進階範例與 API 參考,供你深入了解。


最後更新: 2026-03-06
測試環境: GroupDocs.Annotation 25.2 (Java)
作者: GroupDocs

資源與支援