本篇博文是上一篇博文的延续,上一篇博文重点介绍了 Aspose.PDF Cloud SDK for Java 的一些精彩功能,包括如何添加 突出显示或删除文本,以及使用 Java REST API 在 PDF 中添加线条或圆圈注释。在本文中,我们将特别讨论使用 Java 编程语言在 PDF 文档中添加文本、折线、波浪线和附件注释的细节。
Aspose.PDF Cloud 是一个 REST API,它使用户能够创建、操作和呈现现有 PDF 文件为其他 支持的文档格式。可以使用以下两种方法访问 Cloud API:
- 通过 cURL 命令访问 API
- 使用 Java 编程语言访问 API
让我们进一步讨论使用 cURL 命令和 Java 代码向 PDF 文档添加各种注释。
使用 cURL 命令添加注释
cURL 命令是访问 REST API 最简单、最酷的方法之一。因此,让我们讨论如何使用 cURL 命令添加不同的注释。请注意,每个 API 还允许您访问可以存储文件以供处理的云存储,因此为了确保数据完整性,我们的 API 仅供授权人员访问。因此,您需要首先访问 Aspose.Cloud 仪表板,如果您有 GitHub 或 Google 帐户,只需注册即可。否则,单击 创建新帐户 按钮并提供所需信息。现在使用凭据登录仪表板,从仪表板展开应用程序部分,然后向下滚动到客户端凭据部分以查看客户端 ID 和客户端密钥详细信息。
现在下一步是生成 JSON Web Token (JWT),以便可以通过命令提示符访问 API。
curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=7042694c-5251-4aba-83c9-e81e7518724f&client_secret=db246d4742e8cd22e7266c9391992689" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"
文本注释
文本注释是附加到 PDF 文档中特定位置的注释。关闭时,注释显示为图标;打开时,应显示一个弹出窗口,其中包含读者选择的字体和大小的注释文本。要添加文本注释,我们需要使用 PostPageTextAnnotation API。使用以下 cURL 命令添加带有注释图标的文本注释。
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/text" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[{ \"Color\": { \"A\": 0, \"R\": 0xDA, \"G\": 0xA5, \"B\": 0x20 }, \"Contents\": \"Hello World \", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"string\", \"Rect\": { \"LLX\": 100, \"LLY\": 800, \"URX\": 100, \"URY\": 100 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"string\", \"Subject\": \"Subject of Annotation\", \"Title\": \"Annotation Title\", \"RichText\": \"string\", \"State\": \"Undefined\", \"Open\": true, \"Icon\": \"Note\" }]"
上述示例中使用的示例 PDF 文件可以从以下链接下载
折线注记
折线注释用于在页面上手绘折线。它们可以包含由折线顶点定义的任意数量的边。具有透明填充颜色的折线注释只能在其可见线周围选择。还可以使用 PostPagePolyLineAnnotations API 添加折线注释。
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/polyline" \
-H "accept: application/json" \
-H "authorization: Bearer " \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 0, \"R\": 122, \"G\": 132, \"B\": 255 }, \"Contents\": \"Hello World...\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"Polyline\", \"Rect\": { \"LLX\": 100, \"LLY\": 200, \"URX\": 150, \"URY\": 250 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject of Annotation\", \"Title\": \"Title of Annotation\", \"RichText\": \"<?xml version=\\\"1.0\\\"?><body xmlns=\\\"http://www.w3.org/1999/xhtml\\\" xmlns:xfa=\\\"http://www.xfa.org/schema/xfa-data/1.0/\\\" xfa:APIVersion=\\\"Acrobat:7.0.0\\\" xfa:spec=\\\"2.0.2\\\" ><span style=\\\"text-decoration:;font-size:10.0pt\\\">Contents</span></body>\", \"InteriorColor\": { \"A\": 255, \"R\": 120, \"G\": 110, \"B\": 255 }, \"StartingStyle\": \"Circle\", \"EndingStyle\": \"OpenArrow\", \"Intent\": \"PolyLineDimension\", \"Vertices\": [ { \"X\": 164.611, \"Y\": 499.629 }, { \"X\": 192.858, \"Y\": 509.857 }, { \"X\": 226.461, \"Y\": 493.785 } ] }]"
波浪注释
波浪形或锯齿状下划线注释有助于突出显示文档中的信息。可以使用 PostPageSquigglyAnnotations API 添加它们。下面的命令可帮助您将波浪形注释添加到 PDF 文档。
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/squiggly" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 255, \"R\": 120, \"G\": 123, \"B\": 150 }, \"Contents\": \"A squiggly Annotation\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"First Annotation\", \"Rect\": { \"LLX\": 100, \"LLY\": 300, \"URX\": 120, \"URY\": 330 }, \"PageIndex\": 1, \"ZIndex\": 1, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Center\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject \", \"Title\": \"Title of Squiggly\", \"Starting\": { \"X\": 162.663, \"Y\": 654.5 }, \"StartingStyle\": \"Circle\", \"Ending\": { \"X\": 230.845, \"Y\": 654.5 }, \"EndingStyle\": \"OpenArrow\", \"InteriorColor\": { \"A\": 255, \"R\": 220, \"G\": 220, \"B\": 220 }, \"LeaderLine\": 10, \"LeaderLineExtension\": 5, \"LeaderLineOffset\": 2.5, \"ShowCaption\": true, \"CaptionOffset\": { \"X\": 7, \"Y\": 8 }, \"CaptionPosition\": \"Top\", \"Intent\": \"LineArrow\",\"RichText\": \"string\", \"QuadPoints\": [ { \"X\": 100, \"Y\": 200 } ] }]"
附件注释
可以将各种文件作为附件注释添加到 PDF 文档中,为了满足此要求,可以使用 PostPageFileAttachmentAnnotations API。执行以下 cURL 命令可将现有文件附加到 PDF 文档。在我们的示例中,名为 PdfWithTable.pdf 的文件(已在云存储中可用)用作附件。
curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/fileattachment" \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-H "Content-Type: application/json" \
-d "[ { \"Color\": { \"A\": 255, \"R\": 120, \"G\": 120, \"B\": 120 }, \"Contents\": \"Content\", \"Modified\": \"05/26/2021 03:10:00.000 PM\", \"Id\": \"1\", \"Flags\": [ \"Default\" ], \"Name\": \"FileAttachment\", \"Rect\": { \"LLX\": 100, \"LLY\": 200, \"URX\": 120, \"URY\": 2200 }, \"PageIndex\": 1, \"ZIndex\": 0, \"HorizontalAlignment\": \"Center\", \"VerticalAlignment\": \"Top\", \"CreationDate\": \"05/26/2021 03:10:00.000 PM\", \"Subject\": \"Subject\", \"Title\": \"Title\", \"RichText\": \"string\", \"Icon\": \"PushPin\", \"Opacity\": 0, \"FileDescription\": \"string\", \"FileName\": \"PdfWithTable.pdf\", \"FilePath\": \"PdfWithTable.pdf\" }]"
使用 Java 添加注释
除了 cURL 命令之外,使用我们的云 API 的另一种方法是通过编程 SDK 访问它们。我们已经为流行的编程语言开发了编程 SDK。因此,要使用 Java 语言处理 PDF 中的注释,请尝试使用 Aspose.PDF Cloud SDK for Java。
第一步是在系统上安装 SKD。Cloud SDK 可通过 Maven 和 GitHub 下载。现在在您的 pom.xml 文件中添加以下详细信息,以便在您的 Maven 构建项目中下载并使用 Aspose.Pdf.jar。
<repositories>
<repository>
<id>aspose-cloud</id>
<name>artifact.aspose-cloud-releases</name>
<url>https://artifact.aspose.cloud/repo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf-cloud</artifactId>
<version>21.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
欲了解更多信息,请访问如何安装 Aspose.Cloud SDKs。
文本注释
下面给出了向 PDF 文档添加文本注释的步骤。
- 第一步是创建一个 PdfApi 对象,其中我们提供 ClientID 和 ClientSecret 作为参数
- 然后我们创建 Rectangle 对象,在其中添加注释
- LLX——左下角的 X 坐标。
- LLY——Y——左下角坐标。
- URY-X-右上角的坐标。
- URY-Y-右上角的坐标。
- 创建 TextAnnotation 对象,使用 setHorizontalAlignment(..) 方法定义对齐方式。使用 setSubject(…) 方法设置主题,使用 setState(…) 方法设置默认状态,等等
- 然后创建 TextAnnotation 类型的 ArrayList<> 对象,并将上面创建的 TextAnnotation 对象添加到其中
- 最后,调用 postPageTextAnnotations(…),我们将输入的 PDF 文件名、PageNumber 和上面创建的 Annotations ArrayList 作为参数传递
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
// createPdfApi 实例
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 输入PDF文档
String name = "PdfWithTable.pdf";
// 从本地系统加载文件
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 将文件上传至云存储
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 需要添加注释的页码
int pageNumber = 1;
// 创建添加注释的矩形对象
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// 创建 AnnotationFlags 的 ListArray
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// 创建 TextAnnotation 对象
TextAnnotation textAnnotation = new TextAnnotation();
textAnnotation.setName("Annotation Name");
textAnnotation.setRect(rect);
textAnnotation.setFlags(flags);
textAnnotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
// 设置注释中显示的内容
textAnnotation.contents("Hello World...");
// 设置注释的图标
textAnnotation.icon(TextIcon.KEY);
textAnnotation.setSubject("Text Box Subj");
textAnnotation.setZindex(1);
// 注释对象的默认状态
textAnnotation.setState(AnnotationState.COMPLETED);
// 创建 TextAnnotation 的 ListArray
List<TextAnnotation> annotations = new ArrayList<>();
// 将上面创建的 TextAnnotation 添加到 List 实例
annotations.add(textAnnotation);
// 调用方法为 PDF 文件添加注释
AsposeResponse response = pdfApi.postPageTextAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
折线注释
Cloud SDK 还提供了相同的功能,可将折线注释添加到 PDF 文档。下面给出了满足此要求的步骤和代码片段。
- 首先,我们需要创建一个 PdfApi 实例并将源文件上传到云存储。
- 创建 Point 类型的 ArrayList,定义绘制折线的点。
- 下一步是创建一个 PolyLineAnnotation 对象,我们在其中定义矩形区域并将 Points ListArray 传递给 setVertices(…) 方法。
- 要设置内部颜色,请使用方法 setInteriorColor(…) 并传递 Color 实例作为参数。
- 现在调用startingStyle(…)和endingStyle(…)方法来定义注释的开始和结束样式。这些方法从LineEnding枚举中获取值作为参数。
- 最后,调用PdfApi类的postPagePolyLineAnnotations(…)方法在PDF文档中呈现Annotation。
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// createPdfApi 实例
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 输入PDF文档
String name = "PdfWithTable.pdf";
// 从本地系统加载文件
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 将文件上传至云存储
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 将添加注释的输入文件的页码
int pageNumber = 1;
// 注释的矩形区域
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// 指定注释的顶点
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// 创建 PolyLineAnnotation 对象
PolyLineAnnotation annotation = new PolyLineAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
// 设置注释的水平对齐方式
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
// 创建颜色对象
Color color = new Color();
color.setA(255);
color.setR(120);
color.setG(140);
color.setB(130);
// 设置注释实例的内部颜色
annotation.setInteriorColor(color);
annotation.setVertices(vertices);
// 指定注释的起始样式
annotation.startingStyle(LineEnding.OPENARROW);
// 设置注释的结束样式
annotation.endingStyle(LineEnding.SQUARE);
List<PolyLineAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// 调用方法将折线注释添加到文档第一页
AsposeResponse response = pdfApi.postPagePolyLineAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
波浪注释
一个名为 SquigglyAnnotation 的单独类用于向 PDF 文档添加 Squiggly 注释。下面给出的代码片段可用于向云存储上的 PDF 文件添加 Squiggly 注释。
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// createPdfApi 实例
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 输入PDF文档
String name = "PdfWithTable.pdf";
// 从本地系统加载文件
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 将文件上传至云存储
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 将添加注释的输入文件的页码
int pageNumber = 1;
// 注释的矩形区域
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(600.)
.URX(200.)
.URY(650.);
// 指定注释的顶点
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// 创建 SquigglyAnnotation 对象
SquigglyAnnotation annotation = new SquigglyAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
// 创建颜色对象
Color color = new Color();
color.setA(155);
color.setR(120);
color.setG(140);
color.setB(130);
// 设置注释实例的内部颜色
annotation.color(color);
// 设置注释点
annotation.setQuadPoints(vertices);
List<SquigglyAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// 调用方法将波浪注释添加到文档第一页
AsposeResponse response = pdfApi.postPageSquigglyAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
文件附件注释
要添加文件附件注释,请尝试使用以下代码片段。代码描述与上述部分中分享的相同,只是您需要使用 FileAttachmentAnnotation 对象来完成此要求。
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
// createPdfApi 实例
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 输入PDF文档
String name = "PdfWithTable.pdf";
// 从本地系统加载文件
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// 将文件上传至云存储
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
// 将添加注释的输入文件的页码
int pageNumber = 1;
// 注释的矩形区域
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(100.)
.URX(200.)
.URY(200.);
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// 创建 FileAttachmentAnnotation 对象
FileAttachmentAnnotation annotation = new FileAttachmentAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
// 附件文件路径
annotation.setFilePath("images.jpeg");
// 附件文件名
annotation.setFileName("images.jpeg");
// 创建 FileAttachment 的 List 实例
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
// 调用方法将 FileAttachment 注释添加到文档第一页
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
结论
在本文中,我们讨论了向 PDF 文档添加文本、折线、波浪线和文件附件注释的步骤和相关细节。由于我们的 Cloud SDK 是开源的,您可以从 GitHub 下载完整的源代码。该存储库还包含有关如何使用 Java Cloud SDK 创建和操作现有 PDF 文件的其他有用示例。如果您有任何相关疑问,请随时通过免费的 客户支持论坛 与我们联系。
相关文章
我们强烈建议您阅读以下文章: