曾經有一段時間,我們常常在帶有多個附件和不同文件版本的長電子郵件線程中討論文檔內容和反饋。現在我們可以簡單地使用註釋來標記帶有消息和回复的文檔並發送它。在本文中,您將學習如何使用您的應用程序以編程方式在 Java 中註釋 PDF 文檔。此外,我們還將看到如何使用相同的 Java API 從 PDF 文件中刪除註釋。
以下是下面簡要討論的主題:
PDF 註釋器 Java API
為了在 Java 應用程序中處理文檔和圖像的註釋,GroupDocs 提供了 GroupDocs.Annotation for Java。使用 API,您可以從文字處理文檔、電子表格、演示文稿、圖像、電子郵件、Visio 繪圖、某些 AutoCAD 和數字成像格式(如 DICOM)中添加、刪除和提取註釋。此外,API 允許註釋 PDF 文件。您可以查看文檔以了解一長串 支持的註釋文檔格式。
下載和配置
獲取註解庫 從下載中或僅在基於 Maven 的 Java 應用程序中添加以下 pom.xml 配置來嘗試本文的示例以及 GitHub 上可用的更多示例。有關詳細信息,您可以訪問API 參考。
<repository>
<id>GroupDocsJavaAPI</id>
<name>GroupDocs Java API</name>
<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-annotation</artifactId>
<version>20.2</version>
</dependency>
在 Java 中向 PDF 添加註釋
讓我們快速跳轉到向 PDF 文檔添加一些不同類型的註釋。由於有許多不同類型的註釋,我們可能不會在本文中涵蓋所有內容。我將僅提及它們,您可以單獨了解每個註釋。
-
面積/矩形標註
-
箭
-
距離
-
橢圓
-
強調
-
關聯
-
觀點
-
折線
-
替代品
-
資源編輯
-
三振
-
文本域
-
文本編輯
-
強調
-
水印
讓我們開始在 PDF 文檔中添加其中一些。
使用 Java 向 PDF 添加箭頭註釋
以下是向 PDF 文檔添加箭頭註釋的步驟。

- 使用 Annotator 類加載 PDF 文檔。
- 使用 ArrowAnnotation 類初始化箭頭註釋。
- 使用 ArrowAnnotation 的 setBox 方法設置箭頭的位置和大小。
- 將創建的箭頭註釋添加到 Annotator 對像中。
- 通過使用 save 方法提供路徑來保存帶註釋的 PDF。
以下代碼示例顯示瞭如何使用 Java 向 PDF 文檔添加箭頭註釋。
// 使用 Java 向 PDF 添加箭頭註釋
final Annotator annotator = new Annotator("document.pdf");
ArrowAnnotation arrow = new ArrowAnnotation();
arrow.setBox(new Rectangle(100, 100, 100, 100)); // (x, y, width, height)
annotator.add(arrow);
annotator.save("path/annotated-with-arrow.pdf");
使用 Java 將矩形或區域註釋插入 PDF
您可以在將註釋添加到文檔時自定義任何註釋。以下是將矩形或區域註釋添加到 PDF 文檔的步驟,只需更多自定義。它類似於添加箭頭註釋,但使用 AreaAnnotation 類代替 ArrowAnnotation。
- 使用 Annotator 類加載 PDF 文檔。
- 使用 AreaAnnotation 類初始化矩形註釋。
- 使用 AreaAnnotation 的 setBox 方法設置矩形的位置和大小。
- 設置其他屬性,如顏色、背景、不透明度、樣式、筆寬,甚至消息和時間。
- 將創建的矩形註釋添加到 Annotator 對像中。
- 通過使用 save 方法提供路徑來保存帶註釋的 PDF。

以下代碼示例顯示瞭如何使用 Java 將矩形/區域註釋添加到 PDF 文檔。
// 使用 Java 向 PDF 添加區域註釋或矩形註釋
final Annotator annotator = new Annotator("document.pdf");
AreaAnnotation area = new AreaAnnotation();
area.setBox(new Rectangle(50, 100, 500, 100));
area.setCreatedOn(Calendar.getInstance().getTime());
area.setMessage("Annotate documents and images.");
area.setOpacity(0.7);
area.setPenColor(-13076963);
area.setPenStyle(PenStyle.Dash);
area.setPenWidth((byte) 3);
// 添加到文檔
annotator.add(area);
annotator.save("path/annotated-with-rectangle.pdf");
使用 Java 將 Oval 或 Ellipse Annotation 添加到 PDF
以下是在 PDF 文檔中添加橢圓批註或橢圓批註的步驟。

- 使用 Annotator 類加載 PDF 文檔。
- 使用 EllipseAnnotation 類初始化橢圓註釋。
- 使用 EllipseAnnotation 的 setBox 方法設置橢圓的位置和大小。
- 將創建的橢圓註釋添加到 Annotator 對像中。
- 通過使用 save 方法提供路徑來保存帶註釋的 PDF。
以下代碼示例顯示瞭如何使用 Java 將橢圓形或橢圓形註釋添加到 PDF 文檔。
// 使用 Java 在 PDF 中添加橢圓形或橢圓形註釋
final Annotator annotator = new Annotator("document.pdf");
// 橢圓形或橢圓註釋
EllipseAnnotation ellipse = new EllipseAnnotation();
ellipse.setBox(new Rectangle(275, 505, 300, 80));
// 添加到文檔
annotator.add(area);
annotator.save("path/annotated-with-ellipse.pdf");
使用 Java 將距離註釋插入 PDF

您還可以添加距離註釋以顯示兩點之間的距離。以下是為 PDF 文檔添加距離註釋的步驟。
- 使用 Annotator 類加載 PDF 文檔。
- 使用 DistanceAnnotation 類初始化距離註釋。
- 使用 DistanceAnnotation 的 setBox 方法設置註釋的大小和位置。
- 將創建的距離標註添加到 Annotator 對像中。
- 通過使用 save 方法提供路徑來保存帶註釋的 PDF。
以下代碼示例顯示瞭如何使用 Java 向 PDF 文檔添加距離註釋。
// 使用 Java 的距離標註
final Annotator annotator = new Annotator("document.pdf");
// 距離標註
DistanceAnnotation distance = new DistanceAnnotation();
distance.setBox(new Rectangle(775, 235, 0, 150));
// 添加到文檔
annotator.add(area);
annotator.save("path/annotated-with-distance.pdf");
完整代碼
總而言之,這裡是 Java 代碼,其輸出顯示了所有添加的註釋和消息,並使用上述 Java 代碼進行回复。

以下代碼在 PDF 文件中添加箭頭、矩形、橢圓、距離註釋、消息和回复。
// 使用 Java 向 PDF 添加多個註釋
// 使用 Java 向帶有消息和回复的 PDF 添加箭頭、區域、橢圓形 (Ellipse)、距離註釋
final Annotator annotator = new Annotator(Constants.INPUT);
// 設置回复
Reply reply1 = new Reply();
reply1.setComment("Please look in to these issues.");
reply1.setRepliedOn(Calendar.getInstance().getTime());
Reply reply2 = new Reply();
reply2.setComment("Change Description");
reply2.setRepliedOn(Calendar.getInstance().getTime());
Reply reply3 = new Reply();
reply2.setComment("On-Premises APIs");
reply2.setRepliedOn(Calendar.getInstance().getTime());
Reply reply4 = new Reply();
reply2.setComment("Add images as well.");
reply2.setRepliedOn(Calendar.getInstance().getTime());
java.util.List<Reply> replies = new ArrayList<Reply>();
replies.add(reply1);
replies.add(reply2);
replies.add(reply3);
replies.add(reply4);
// 箭頭註釋 =================================
ArrowAnnotation arrow = new ArrowAnnotation();
arrow.setBox(new Rectangle(560, 250, 60, -60));
arrow.setCreatedOn(Calendar.getInstance().getTime());
arrow.setMessage("This image is little upwards.");
arrow.setOpacity(0.7);
arrow.setPenColor(-3407872);
arrow.setPenWidth((byte) 2);
arrow.setReplies(replies.subList(0, 1));
// 區域標註 ===================================
AreaAnnotation area = new AreaAnnotation();
area.setBox(new Rectangle(50, 100, 500, 100));
area.setCreatedOn(Calendar.getInstance().getTime());
area.setMessage("Annotate documents and images.");
area.setOpacity(0.7);
area.setPenColor(-13076963);
area.setPenStyle(PenStyle.Dash);
area.setPenWidth((byte) 3);
area.setReplies(replies.subList(1, 2));
// 橢圓或橢圓註釋 ========================
EllipseAnnotation ellipse = new EllipseAnnotation();
ellipse.setBox(new Rectangle(275, 505, 300, 80));
ellipse.setCreatedOn(Calendar.getInstance().getTime());
ellipse.setMessage("Shows all the available Annotation APIs.");
ellipse.setOpacity(0.7);
ellipse.setPenColor(-16034924);
ellipse.setPenStyle(PenStyle.Dot);
ellipse.setPenWidth((byte) 3);
ellipse.setReplies(replies.subList(2, 3));
// 距離標註 ===============================
DistanceAnnotation distance = new DistanceAnnotation();
distance.setBox(new Rectangle(775, 235, 0, 150));
distance.setCreatedOn(Calendar.getInstance().getTime());
distance.setMessage("This is the heading area");
distance.setOpacity(0.7);
distance.setPenColor(-21197);
distance.setPenStyle(PenStyle.Solid);
distance.setPenWidth((byte) 1);
distance.setReplies(replies.subList(3, 4));
// 添加註釋 =================================
annotator.add(arrow);
annotator.add(area);
annotator.add(ellipse);
annotator.add(distance);
// 保存帶註釋的 PDF ===============================
annotator.save(outputPath);
annotator.dispose();
在 Java 中從 PDF 中刪除註釋
以下步驟顯示瞭如何使用 Java 從 PDF 文件中刪除所有註釋。
- 使用 Annotator 類加載 PDF 文檔。
- 使用 SaveOptions 類初始化保存選項。
- 將註釋類型設置為無。
- 通過使用 save 方法提供路徑,保存已刪除所有註釋的 PDF 文件。
以下 Java 代碼從 PDF 文件中刪除註釋。
// 使用 Java 從 PDF 文檔中刪除所有註釋
final Annotator annotator = new Annotator("document.pdf");
SaveOptions saveOptions = new SaveOptions();
saveOptions.setAnnotationTypes(AnnotationType.None);
// 保存沒有更多註釋的 PDF。
annotator.save("path/annotations-removed.pdf", saveOptions);
annotator.dispose();
結論
簡而言之,您已經了解瞭如何在 Java 應用程序中向 PDF 添加註釋。此外,您還看到瞭如何從任何 PDF 文件中刪除所有註釋。現在,您應該有信心構建自己的文檔註釋器 Java 應用程序。它可以使用 GroupDocs.Annotation for Java 支持不同類型的註釋。
有關更多詳細信息、選項和示例,您可以訪問 文檔 和 GitHub 存儲庫。如需進一步查詢,請聯繫 論壇 上的支持人員。