本文为您提供了一步一步的指南和代码示例,用于在 Java 中以编程方式加密和解密 PDF 文件。
在各种情况下,PDF 文档在利益相关者之间共享之前会被加密。加密使文档免受未经授权的访问和内容篡改。有几种流行的方法可以保护 PDF 文档 - 使用密码加密 PDF 或限制用户的访问权限,例如打印、编辑、复制等。本文演示了如何在 Java 中加密或解密 PDF。此外,您将学习如何限制用户在 PDF 文档中的权限。
用于加密或解密 PDF 的 Java API - 免费下载
Aspose.PDF for Java 是一个功能丰富的 PDF 操作 API,可让您无缝处理 PDF 加密和解密。此外,它还允许您以编程方式修改用户在 PDF 文档中的权限。您可以免费 下载 API 或使用以下 Maven 配置安装它。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>20.9</version>
<classifier>jdk17</classifier>
</dependency>
用 Java 加密 PDF 文件
PDF 文档的加密要求您设置用于打开和访问文档的密码。除此之外,您可以选择以下加密算法之一用于加密。
以下是用 Java 加密 PDF 文件的步骤。
- 使用 Document 类加载 PDF 文档。
- 使用 Document.encrypt(“userpassword”, “ownerpassword”, 0, CryptoAlgorithm) 方法加密 PDF。
- 使用 Document.save(string) 方法保存加密的 PDF。
以下代码示例展示了如何使用 Java 加密 PDF 文档。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document document = new Document("input.pdf");
// 加密 PDF
document.encrypt("user", "owner", 0, CryptoAlgorithm.AESx256);
// 保存更新的 PDF
document.save("Encrypted_output.pdf");
打开加密的 PDF 时会出现以下对话框。
用 Java 解密 PDF 文件
加密 PDF 文档的解密需要用户或所有者的密码。以下是用 Java 解密 PDF 文件的步骤。
- 通过在构造函数中指定密码,使用 Document 类加载加密的 PDF。
- 调用 Document.decrypt() 方法对 PDF 进行解密。
- 使用 Document.save(string) 方法保存解密的 PDF 文档。
以下代码示例展示了如何使用 Java 解密加密的 PDF。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// 打开文档
Document document = new Document("input.pdf", "password");
// 解密PDF
document.decrypt();
// 保存更新的 PDF
document.save("output.pdf");
使用 Java 更改 PDF 中的安全权限
您还可以限制用户在加密 PDF 文档时执行不同操作的权限。以下是您可以设置的权限。
- 打印文档 - 允许打印文档。
- 修改内容 - 允许修改内容。
- 提取内容 - 允许从文档中复制内容。
- 修改文本注释 - 允许添加或更新文本注释。
- 填写表格 - 允许填写交互式表格字段。
- 提取残障内容 - 允许提取文本和图形(针对残障用户)。
- 组合文档 - 允许插入、旋转或删除页面以及创建书签或缩略图。
- 打印质量——允许高分辨率打印文档。
以下是在 PDF 文档中设置或修改权限的步骤。
- 使用 Document 类加载 PDF。
- 使用 DocumentPrivilege 类来设置权限。
- 加密 PDF 并将其保存,就像您在前面的示例中所做的那样。
以下代码示例显示了如何使用 Java 修改 PDF 文档中的权限。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-pdf/Aspose.Pdf-for-Java
Document document = new Document("inputFile.pdf");
try /* JAVA: was using */
{
DocumentPrivilege documentPrivilege = DocumentPrivilege.getForbidAll();
documentPrivilege.setAllowScreenReaders(true);
documentPrivilege.setAllowPrint(true);
document.encrypt("user", "owner", documentPrivilege, CryptoAlgorithm.AESx128, false);
document.save("outputFile.pdf");
} finally {
if (document != null)
document.dispose();
}
以下是加密 PDF 文件中的权限。
结论
在本文中,您学习了如何在 Java 中加密或解密 PDF 文件。此外,您还了解了如何在 Java 中以编程方式修改用户在 PDF 文档中的权限。您可以使用 文档 探索和了解有关 Java PDF API 的更多信息。