曾经有一段时间,我们曾经在包含多个附件和不同文件版本的长电子邮件线程中讨论文档内容和反馈。现在我们可以简单地使用注释来标记带有消息和回复的文档并发送它。在本文中,您将学习如何使用您的应用程序以编程方式在 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方法设置矩形的位置和大小。
  • 设置其他属性,如 colorbackgroundopacitystylepen width,甚至 messagestime .
  • 将创建的矩形注解添加到 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 向 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 代码,其输出显示了所有添加的 annotationsmessages 以及 replies 使用提到的 Java 代码。

为 PDF 添加注释

下面的代码将箭头、矩形、椭圆、距离注释、消息和回复添加到 PDF 文件。

// 使用 Java 向 PDF 添加多个注释
// 使用 Java 向 PDF 添加箭头、面积、椭圆(椭圆)、距离注释以及消息和回复
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 存储库。如需进一步查询,请联系 论坛 上的支持人员。

也可以看看