PDFBox - PDF加密

PDFBox - PDF加密 首页 / PDFbox入门教程 / PDFBox - PDF加密

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

您可以使用 StandardProtectionPolicyAccessPermission类提供的方法对PDF文档进行加密。

AccessPermission 类用于通过为PDF文档分配访问权限来保护它。

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

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

步骤1 - 加载现有文档

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

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

步骤2 - 创建访问权限对象

实例化 AccessPermission 类,如下所示。

AccessPermission accessPermission=new AccessPermission();

步骤3 - 创建加密对象

通过传递所有者密码,用户密码和 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();

完整示例

假设无涯教程在路径C:/ PdfBox_Examples /中有一个名为sample.pdf的PDF文档,其空页面如下所示。

Sample Document

本示例演示如何加密上述PDF文档。在这里将加载名为 sample.pdf 的PDF文档并对其进行加密。将此代码保存在名为 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 {
      //加载现有文档
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
   
      //创建访问权限对象
      AccessPermission ap = new AccessPermission();         

      //创建标准化的支持policy对象
      StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);

      //设置加密密钥的长度
      spp.setEncryptionKeyLength(128);

      //设置访问权限
      spp.setPermissions(ap);

      //保护文件
      document.protect(spp);

      System.out.println("Document encrypted");

      //保存文档
      document.save("C:/PdfBox_Examples/sample.pdf");
      //关闭文件
      document.close();

   }
}

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

javac EncriptingPDF.java
java EncriptingPDF

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

Document encrypted

如果您尝试打开文档 sample.pdf ,则由于已加密,因此无法打开。而是,提示您键入密码以打开文档,如下所示。

Document encryption

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

即时消息技术剖析与实战 -〔袁武林〕

Netty源码剖析与实战 -〔傅健〕

.NET Core开发实战 -〔肖伟宇〕

Kafka核心源码解读 -〔胡夕〕

Serverless入门课 -〔蒲松洋(秦粤)〕

系统性能调优必知必会 -〔陶辉〕

小马哥讲Spring AOP编程思想 -〔小马哥〕

超级访谈:对话张雪峰 -〔张雪峰〕

Kubernetes入门实战课 -〔罗剑锋〕

好记忆不如烂笔头。留下您的足迹吧 :)