在线编辑 PDF

由于数据保密,我们需要从 PDF 文件中删除敏感信息,因此我们通常会从 PDF 文档的某个页面区域进行编辑(删除文本、图像等)。但是,在处理大量文档时,我们需要使用 API 来实现此要求。

在本文中,我们将讨论如何使用 Aspose.PDF Cloud SDK for JavaRedactionAnnotation 类在线编辑 PDF 的步骤。

SDK 的安装

Aspose.PDF Cloud SDK for Java 是专门为 Java 开发人员提供的编程 API,它基于 Aspose.PDF Cloud API 构建。我们的 Cloud API 可从任何平台使用,无需安装任何特定软件。但是,要使用 SDK,您需要先在系统上安装它。

Cloud SDK 可通过 MavenGitHub 下载。现在在您的 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());
编辑过的 PDF 文档

图 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 还支持大量其他注释功能,其详细信息可在 使用注释 中找到。您可以考虑访问 产品主页 以获取有关其功能的更多信息。如果您有任何相关疑问,请随时通过 免费产品支持论坛 联系。