
由于数据保密,我们需要从 PDF 文件中删除敏感信息,因此我们通常会从 PDF 文档的某个页面区域进行编辑(删除文本、图像等)。但是,在处理大量文档时,我们需要使用 API 来实现此要求。
在本文中,我们将讨论如何使用 Aspose.PDF Cloud SDK for Java 的 RedactionAnnotation 类在线编辑 PDF 的步骤。
SDK 的安装
Aspose.PDF Cloud SDK for Java 是专门为 Java 开发人员提供的编程 API,它基于 Aspose.PDF Cloud API 构建。我们的 Cloud API 可从任何平台使用,无需安装任何特定软件。但是,要使用 SDK,您需要先在系统上安装它。
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>
安装 SDK 后,下一步是获取您的个性化客户端 ID 和客户端密钥。请访问 Aspose.Cloud 仪表板,如果您有 GitHub 或 Google 帐户,只需注册即可。否则,单击 创建新帐户 按钮并提供所需信息。现在使用凭据登录仪表板并展开“应用程序”部分。向下滚动到“客户端凭据”部分以查看客户端 ID 和客户端密钥详细信息。
使用 Java 添加修订注释
在下面的部分中,我们解释了如何使用 Aspose.PDF Cloud SDK for Java 添加矩形框来删除 PDF 文件内容的步骤。
- 首先,我们需要创建一个 PdfApi 对象,同时传递从 Aspose.Cloud 仪表板获取的 ClientId 和 ClientSecret 详细信息。
- 其次,创建一个 Rectangle 类的对象来指定页面上将添加 Annotation 的区域。
- 第三,从 AnnotationFlags 枚举中选择默认值并将其添加到 AnnotationFlags 类型的列表中。
- 现在创建 RedactionAnnotation 类的实例并使用 setRect(…) 方法设置矩形区域。
- 使用 setHorizontalAlignment(…) 方法设置水平对齐方式,并从 HorizontalAlignment 枚举中选择 Center。
- 为了填充注释内的颜色,请使用 setFillColor(…) 方法并传递 Color 对象。
- 使用 setModified(…) 方法设置注释的最后修改日期。
- 倒数第二,创建一个 RedactionAnnotation 类型的 List,并将 RedactAnnotation 对象添加到此列表中。
- 最后,调用 PdfApi 的 postPageRedactionAnnotations(…) 方法并传递源文件名、需要添加注释的页码。此外,传递 RedactionAnnotation List 作为参数以启动编辑过程。
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
// createPdfApi 实例
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 输入PDF文档
String sourcePDF = "PdfWithTable.pdf";
// 用于放置注释的 PDF 页面
int pageNumber = 1;
// 创建矩形对象来指定编辑注释区域
// 该区域从页面左下角开始计算
Rectangle rect = new Rectangle()
// 测量单位是点
.LLX(100.)
.LLY(700.)
.URX(200.)
.URY(600.);
// 创建 AnnotationFlags 数组
List<AnnotationFlags> flags = new ArrayList<>();
// 将 AnnotationFlag 设置为默认值
flags.add(AnnotationFlags.DEFAULT);
// 创建点的 ArrayList
List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));
// 创建 Redact Annotation 对象
RedactionAnnotation annotation = new RedactionAnnotation();
// 设置注释的名称。
// 当我们在文档中有多个注释时它很有用
annotation.setName("Name");
// 设置注释的矩形区域
annotation.setRect(rect);
annotation.setFlags(flags);
// 设置水平对齐为中心
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
// 将 ZIndex 设置为 1。
annotation.setZindex(1);
// 以十六进制代码定义 SlateBlue 颜色
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// 指定注释的填充颜色
annotation.setFillColor(color);
// 注释最后修改的日期和时间。
annotation.setModified("05/21/2021 12:00:00.000 AM");
// 设置一个 8xN 数字数组,指定坐标
// 想要删除的内容区域。
annotation.setQuadPoint(points);
// 创建 RedactAnnotation 类型的列表对象
List<RedactionAnnotation> annotations = new ArrayList<>();
// 将先前创建的 Annotations 对象添加到 RedactAnnotation 数组中
annotations.add(annotation);
// 将 RedactAnnotation 添加到 PDF 文档
AsposeResponse response = pdfApi.postPageRedactionAnnotations(sourcePDF, pageNumber, annotations, null, null, true);
assertEquals(200, (int)response.getCode());

图 1:- 已将编辑注释添加到 PDF 文件。
从以下网址下载上述示例中使用的示例文件
阅读页面修订注释
Aspose.PDF Cloud SDK for Java 还提供了读取 PDF 文档中现有 Redact 注释信息的功能。下面给出的步骤定义了如何使用 Java 读取注释详细信息。
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
// createPdfApi 实例
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 输入PDF文档
String sourcePDF = "PdfWithTable.pdf";
// 获取文档修订注释
RedactionAnnotationsResponse responseAnnotations = pdfApi.getPageRedactionAnnotations(sourcePDF,1, null, null);
assertEquals(200, (int)responseAnnotations.getCode());
// 打印文档中可用注释的数量
System.out.println(responseAnnotations.getAnnotations().getList().size());
更新现有的修订注释
如果 PDF 文档已包含 Redaction 注释,我们也可以使用 API 更新它们。下面详细介绍了如何更新 PDF 文档中的现有注释。
- 创建 PdfApi 的实例,同时传递客户端 ID 和客户端机密详细信息作为参数。
- 创建一个 Rectangle 对象来定义注释区域。它从文档的左下角开始计算,默认单位是 Point。
- 创建 AnnotationFlags 列表并将 AnnotationFlags.DEFAULT 值添加到列表中。
- 现在我们需要创建 RedactionAnnotation 对象并调用 setRect(…) 方法来定义注释的矩形区域。
- 使用 setModified(…) 方法设置注释的最后修改日期。
- 调用 PdfApi 的 getDocumentRedactionAnnotations(…) 方法从文档中读取注释列表。
- 使用 responseAnnotations.getAnnotations().getList().get(0).getId() 获取特定的 Annotation 对象。
- 最后,调用PdfApi类的方法putRedactionAnnotation(…)来更新PDF文件中现有的Redaction Annotation。
// 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
// createPdfApi 实例
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 输入PDF文档
String sourcePDF = "PdfWithAnnotations.pdf";
// 创建注释的矩形区域
Rectangle rect = new Rectangle()
.LLX(200.)
.LLY(120.)
.URX(150.)
.URY(100.);
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));
// 创建 Redaction Annotation 对象
RedactionAnnotation annotation = new RedactionAnnotation();
// 设置注释的名称
annotation.setName("Name Updated");
// 设置注释的矩形区域
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.setZindex(1);
annotation.setModified("01/01/2018 12:02:03.000 AM");
annotation.setQuadPoint(points);
// 以十六进制代码定义 SlateBlue 颜色
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// 指定注释的填充颜色
annotation.setFillColor(color);
// 从文档中获取现有注释
RedactionAnnotationsResponse responseAnnotations = pdfApi.getDocumentRedactionAnnotations(sourcePDF, null, null);
assertEquals(200, (int)responseAnnotations.getCode());
// 获取索引 0 处的注释
String annotationId = responseAnnotations.getAnnotations().getList().get(0).getId();
// 更新索引 0 处的注释
AsposeResponse response = pdfApi.putRedactionAnnotation(sourcePDF, annotationId, annotation, null, null, true);
assertEquals(200, (int)response.getCode());

图片 2:- 删除注释已更新。
上述示例中使用的资源文件可以从以下链接下载
结论
在本文中,我们讨论了如何从 PDF 文档中删除敏感信息的步骤。除了删除注释之外,API 还支持大量其他注释功能,其详细信息可在 使用注释 中找到。您可以考虑访问 产品主页 以获取有关其功能的更多信息。如果您有任何相关疑问,请随时通过 免费产品支持论坛 联系。