返回介绍

加密 PDF 文档(Encrypting a PDF Document)

发布于 2021-06-11 14:05:01 字数 3735 浏览 993 评论 0 收藏 0

在上一章中,我们已经了解了如何在PDF文档中插入图像。 在本章中,我们将讨论如何加密PDF文档。

加密PDF文档

您可以使用StandardProtectionPolicyAccessPermission classes提供的方法加密PDF文档。

AccessPermission类用于通过为其分配访问权限来保护PDF文档。 使用此类,您可以限制用户执行以下操作。

  • 打印文档
  • 修改文档的内容
  • 复制或提取文档的内容
  • 添加或修改注释
  • 填写交互式表单字段
  • 提取文本和图形,以便为视障人士提供便利
  • 组装文档
  • Print in degraded quality

StandardProtectionPolicy类用于向文档添加基于密码的保护。

以下是加密现有PDF文档的步骤。

第1步:加载现有PDF文档

使用PDDocument类的静态方法load()加载现有PDF文档。 此方法接受文件对象作为参数,因为这是一个静态方法,您可以使用类名调用它,如下所示。

File file = new File("path of the document") 
PDDocument document = PDDocument.load(file);

第2步:创建访问权限对象

实例化AccessPermission类,如下所示。

AccessPermission accessPermission = new AccessPermission();

第3步:创建StandardProtectionPolicy对象

通过传递所有者密码,用户密码和AccessPermission对象来实例化StandardProtectionPolicy类,如下所示。

StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);

第4步:设置加密密钥的长度

使用setEncryptionKeyLength()方法设置加密密钥长度,如下所示。

spp.setEncryptionKeyLength(128);

第5步:设置权限

使用StandardProtectionPolicy类的setPermissions()方法设置权限。 此方法接受AccessPermission对象作为参数。

spp.setPermissions(accessPermission);

第6步:保护文档

您可以使用PDDocument类的protect()方法保护文档,如下所示。 将StandardProtectionPolicy对象作为参数传递给此方法。

document.protect(spp);

第7步:保存文档

添加所需内容后,使用PDDocument类的save()方法保存PDF文档,如以下代码块所示。

document.save("Path");

第8步:关闭文档

最后,使用PDDocument类的close()方法关闭文档,如下所示。

document.close();

例子 (Example)

假设,我们在路径C:/PdfBox_Examples/有一个名为sample.pdf的PDF文档,其中包含空页,如下所示。

样本文件

此示例演示如何加密上述PDF文档。 在这里,我们将加载名为sample.pdf的PDF文档并对其进行加密。 将此代码保存在名为EncriptingPDF.java.的文件中EncriptingPDF.java.

import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
      //Creating access permission object
      AccessPermission ap = new AccessPermission();         
      //Creating StandardProtectionPolicy object
      StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);
      //Setting the length of the encryption key
      spp.setEncryptionKeyLength(128);
      //Setting the access permissions
      spp.setPermissions(ap);
      //Protecting the document
      document.protect(spp);
      System.out.println("Document encrypted");
      //Saving the document
      document.save("C:/PdfBox_Examples/sample.pdf");
      //Closing the document
      document.close();
   }
}

使用以下命令从命令提示符编译并执行保存的Java文件。

javac EncriptingPDF.java
java EncriptingPDF

在执行时,上述程序加密显示以下消息的给定PDF文档。

Document encrypted

如果您尝试打开文档sample.pdf ,则不能,因为它已加密。 相反,它会提示输入密码以打开文档,如下所示。

文档加密

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文