写点什么

Java:如何加密或解密 PDF 文档?

作者:在下毛毛雨
  • 2023-04-13
    四川
  • 本文字数:2029 字

    阅读完需:约 7 分钟

Java:如何加密或解密PDF文档?

在工作中,我们会将重要的文档进行加密,并且设置用户的访问权限,其他外部人员均无法打开,只有获取该权限的用户才有资格打开文档。此外,限制用户的使用权限,极大程度上阻止了那些有意要篡改、拷贝其中内容的人,提高文档的安全性。与此同时,文档加密的另一大作用是为了防止丢失,因为可能存在员工出差或离职时,将文档有意或无意的删除,造成文档丢失的现象,从而导致公司的业务和形象受到一定影响。那么我们如何才能加密 PDF 文档呢?加密文档之后又该如何解密呢?下面篇文章就详细介绍了如何以编程的方式,通过 Java 代码加密或解密 PDF 文档。

 

  • 使用密码加密 PDF 文档

  • 移除 PDF 文档的密码

代码编译环境:

IntelliJIDEA 2019(jdk 1.8.0)

PDF Jar 包:Free Spire.PDF for Java 5.1.0

引入 jar 包

导入方法 1:

手动引入。将 Free Spire.PDF for Java 下载到本地,解压,找到 lib 文件夹下的 Spire.PDF.jar 文件。在 IDEA 中打开如下界面,将本地路径中的 jar 文件引入 Java 程序:

 导入方法 2:如果您想通过 Maven 安装,则可以在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>
        <repository>
            <id>com.e-iceblue</id>
           <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
<dependencies>
    <dependency>
       <groupId>e-iceblue</groupId>
       <artifactId>spire.pdf.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
复制代码

使用密码加密 PDF 文档

可以用于加密 PDF 文档的密码有两种:打开密码和权限密码。打开密码可以限制其他人打开 PDF 文档,必须输入密码才能查看有打开密码的 PDF 文档。而权限密码则可以限制对文档进行操作,如打印、复制、评论等。当一个 PDF 文档被同时用这两种密码加密时,可以使用其中任意一种来打开 PDF 文档。


  • 创建 PdfDocument 的对象。

  • 使用 PdfDocument.loadFromFile() 方法载入 PDF 文件。

  • 设置打开密码、权限密码、密钥大小以及权限。

  • 使用 PdfDocument.getSecurity().encrypt(java.lang.String openPassword,java.lang.String permissionPassword,java.util.EnumSet<PdfPermissionsFlags> permissions, PdfEncryptionKeySizekeySize) 方法加密文档。

  • 使用 PdfDocument.saveToFile() 方法保存 PDF 文件。

完整代码

Java

import java.util.EnumSet;
import com.spire.pdf.PdfDocument;import com.spire.pdf.security.PdfEncryptionKeySize;import com.spire.pdf.security.PdfPermissionsFlags;
public class encryptPDF { public static void main(String[] args) {
//创建PdfDocument的对象 PdfDocument pdf = new PdfDocument();
//载入PDF文件 pdf.loadFromFile("收购XXX公司项目.pdf");
//加密文档 PdfEncryptionKeySize keySize = PdfEncryptionKeySize.Key_128_Bit; String openPassword = "password"; String permissionPassword = "permission"; EnumSet flags = EnumSet.of(PdfPermissionsFlags.Print, PdfPermissionsFlags.Fill_Fields); pdf.getSecurity().encrypt(openPassword, permissionPassword, flags, keySize);
//保存文档 pdf.saveToFile("加密.pdf"); pdf.close(); }}
复制代码

效果图

移除 PDF 文档的密码

如需解密 PDF 文件,可以使用将打开密码和权限密码设置为空,从而去掉密码。以下是详细操作步骤:


  • 创建 PdfDocument 的对象。

  • 使用 PdfDocument.loadFromFile(java.lang.String filename, java.lang.String password) 方法载入加密的 PDF 文件。

  • 使用 PdfDocument.getSecurity().encrypt(java.lang.String openPassword, java.lang.String permissionPassword, java.util.EnumSet<PdfPermissionsFlags> permissions, PdfEncryptionKeySize keySize, java.lang.String originalPermissionPassword) 方法将打开密码和权限密码设置为空,以解密文档。

  • 使用 PdfDocument.saveToFile() 方法保存 PDF 文件。

完整代码

Java

import com.spire.pdf.PdfDocument;import com.spire.pdf.security.PdfEncryptionKeySize;import com.spire.pdf.security.PdfPermissionsFlags;
public class decryptPDF { public static void main(String[] args) {
//创建PdfDocument的对象 PdfDocument pdf = new PdfDocument();
//使用密码载入加密的PDF文档 pdf.loadFromFile("加密.pdf", "password");
//解密文档 pdf.getSecurity().encrypt("", "", PdfPermissionsFlags.getDefaultPermissions(), PdfEncryptionKeySize.Key_256_Bit, "permission");
//保存文件 pdf.saveToFile("解密.pdf"); pdf.close(); }}
复制代码

效果图

—本文完—


发布于: 1 小时前阅读数: 2
用户头像

还未添加个人签名 2022-06-02 加入

还未添加个人简介

评论

发布
暂无评论
Java:如何加密或解密PDF文档?_Java_在下毛毛雨_InfoQ写作社区