使用Java加密 PDF
我们可以通过使用外部库 PDFBox 使用Java加密任何 PDF。在 PDFBox 库中,有 2 个类可用 StandardProtectionPolicy 和 AccessPermission 类。
加密方法:
通过使用 PDFBox 库,您将了解如何加密 PDF 文件。当用户希望他们自己的数据或文件处于受保护模式时使用加密。加密用作加密文件的内置算法,该算法只需要访问文件的凭据。
AccessPermission类用于通过为其分配访问权限来保护 PDF。此类将限制用户对 PDF 执行不同的操作。例子。打印、复印、修改等。
StandardProtectionPolicy类用于对 PDF 文档应用密码。
PDFBox 的 Maven 依赖:
org.apache.pdfbox
pdfbox
2.0.21
将密码应用于 PDF的步骤
1. 加载 PDF 文档:
使用类 PDDocument 的 load() 静态方法(我们可以使用类名访问它)加载 PDF 文件。 load() 方法将接受 PDF 文件作为参数。
File f = new File("path_of_PDFfile");
PDDocument pdd = PDDocument.load(f);
2. 创建一个AccessPermission 类的实例:
AccessPermission ap = new AccessPermission();
3. 创建StandardProtectionPolicy 的实例:
在 StandardProtectionPolicy 类的实例化过程中,传递所有者密码、用户密码和 AccessPermission 类的对象“ap”。
StandardProtectionPolicy stpp = new StandardProtectionPolicy("Owner_pass" , "user_pass" , ap);
在这里,我们可以使用任何密码来加密 PDF 文件。
示例:这里将密码“abcd”视为用户和所有者密码。
StandardProtectionPolicy stpp = new StandardProtectionPolicy("abcd" , "abcd" , ap);
4. 设置加密密钥的长度:
使用 StandardProtectionPolicy 类的 setEncryptionKeyLength() 方法设置加密密钥的长度。
stpp.setEncryptionKeyLength(128);
5.设置权限:
使用 StandardProtectionPolicy 类的 setPermission() 方法设置对 PDF 的权限。您必须在 setPermission() 方法中将 AccessPermission 类的对象作为参数传递。
stpp.setPermission(ap);
6.保护PDF文件:
使用 PDDocument 类的protect() 方法保护PDF 文件。在这里,我们必须将 StandardProtectionPolicy 类的对象作为参数传递。
pdd.protect(stpp);
7. 保存并关闭文档:
最后,使用 PDDocument 类的 save() 和 close() 方法保存并关闭文档。
pdd.save("path_of_PDFfile"); // save the document
pdd.close(); // close the document
Java
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
import java.io.File;
import java.io.IOException;
class PdfEncryption {
public static void main(String[] args)
throws IOException
{
// step 1. Loading the pdf file
File f = new File("D:\\demo.pdf");
PDDocument pdd = PDDocument.load(f);
// step 2.Creating instance of AccessPermission
// class
AccessPermission ap = new AccessPermission();
// step 3. Creating instance of
// StandardProtectionPolicy
StandardProtectionPolicy stpp
= new StandardProtectionPolicy("abcd", "abcd", ap);
// step 4. Setting the length of Encryption key
stpp.setEncryptionKeyLength(128);
// step 5. Setting the permission
stpp.setPermissions(ap);
// step 6. Protecting the PDF file
pdd.protect(stpp);
// step 7. Saving and closing the the PDF Document
pdd.save("D:\\demo.pdf1");
pdd.close();
System.out.println("PDF Encrypted successfully...");
}
}
输出:
加密前:
在这里,您将看到无需任何密码即可访问该文件。在加密之前,您可以直接访问文件而无需任何凭据。我们来看一下。
加密后:
加密后,您的 PDF 文件将保存在给定位置并以受保护模式保存,这仅意味着您需要密码才能访问或阅读 PDF 文件。我们来看一下。
通过这些方式,您可以使用密码轻松保护您的 PDF 文档。
如果你想在 Eclipse IDE 上实现这个程序,那么使用下面给出的以下步骤。
- 打开 Eclipse IDE。
- 创建一个新的Java项目,例如 PDFEncryption。
- 现在,创建一个像 PdfEncryption 这样的新Java类。
- 现在,要添加依赖项,请添加在程序中使用的两个 .jar 文件。
- 从此链接下载 .jar 文件并添加 PDFBox 2.0.21 添加 PDFBox 库。
- 从此链接添加 Apache Commons Logging 库 Apache 公共日志记录 1.2 。
您可以查看下面给出的屏幕截图以供参考。