在上一章中,无涯教程已经了解了如何在PDF文档中插入图像。在本章中将讨论如何加密PDF文档。
您可以使用 StandardProtectionPolicy 和 AccessPermission类提供的方法对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文档,其空页面如下所示。

本示例演示如何加密上述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);
</span><span class="com">//创建访问权限对象</span><span class="pln">
</span><span class="typ">AccessPermission</span><span class="pln"> ap </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">AccessPermission</span><span class="pun">();</span><span class="pln">
</span><span class="com">//创建标准化的支持policy对象</span><span class="pln">
</span><span class="typ">StandardProtectionPolicy</span><span class="pln"> spp </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">StandardProtectionPolicy</span><span class="pun">(</span><span class="str">"1234"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"1234"</span><span class="pun">,</span><span class="pln"> ap</span><span class="pun">);</span><span class="pln">
</span><span class="com">//设置加密密钥的长度</span><span class="pln">
spp</span><span class="pun">.</span><span class="pln">setEncryptionKeyLength</span><span class="pun">(</span><span class="lit">128</span><span class="pun">);</span><span class="pln">
</span><span class="com">//设置访问权限</span><span class="pln">
spp</span><span class="pun">.</span><span class="pln">setPermissions</span><span class="pun">(</span><span class="pln">ap</span><span class="pun">);</span><span class="pln">
</span><span class="com">//保护文件</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">protect</span><span class="pun">(</span><span class="pln">spp</span><span class="pun">);</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"Document encrypted"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//保存文档</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">save</span><span class="pun">(</span><span class="str">"C:/PdfBox_Examples/sample.pdf"</span><span class="pun">);</span><span class="pln">
</span><span class="com">//关闭文件</span><span class="pln">
document</span><span class="pun">.</span><span class="pln">close</span><span class="pun">();</span><span class="pln">
}
}
使用以下命令从命令提示符处编译并执行保存的Java文件。
javac EncriptingPDF.java java EncriptingPDF
执行后,上述程序会加密显示以下消息的给定PDF文档。
Document encrypted
如果您尝试打开文档 sample.pdf ,则由于已加密,因此无法打开。而是,提示您键入密码以打开文档,如下所示。