Java 加密和解密PDF文档
前言在日常办公时 , 为了保护文档不被他人篡改 , 我们可为文档设置打开口令 , 即加密 。 同时 , 因需要我们也可对加密文档进行解密 , 以便能够查看和编辑文档 。 本文将通过Java程序来演示如何对PDF文档进行加密和解密 。
此次代码示例用到的控件是Free Spire.PDF for Java 。 该控件主要功能在于帮助开发人员在Java应用程序中生成和操作PDF文档 , 且运行环境无需安装Adobe Acrobat 。
Jar包安装及导入
在运行代码前 , 需将Jar包导入IDEA中 。 导入方式有两种:其 一 , 在E-iceblue中文官网上下载Free Spire.PDF for Java产品包 , 解压后将lib文件夹下的Spire.Pdf.jar手动导入IDEA中;其 二 , 在IDEA中创建一个Maven项目 , 然后在pom.xml文件中键入以下代码 , 最后点击“Import Changes”即可 。
最终导入效果图如下:
文章插图
代码示例 【示例1】加密PDF文档
import java.util.EnumSet;import com.spire.pdf.PdfDocument;import com.spire.pdf.security.PdfEncryptionKeySize;import com.spire.pdf.security.PdfPermissionsFlags;public class Encrypt {public static void main(String[] args) {//创建PdfDocument实例PdfDocument doc = new PdfDocument();//加载PDF文件doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Sample.pdf");//对文件进行加密PdfEncryptionKeySize keySize = PdfEncryptionKeySize.Key_128_Bit;//设置KeySizeString openPassword = "myppt123";//设置文档打开密码String permissionPassword = "edit";EnumSet flags = EnumSet.of(PdfPermissionsFlags.Print, PdfPermissionsFlags.Fill_Fields);doc.getSecurity().encrypt(openPassword,permissionPassword,flags, keySize);//保存文件doc.saveToFile("output/Encrypt.pdf");doc.close();}}
效果截图:
文章插图
【示例2】解密PDF文档
import com.spire.pdf.PdfDocument;import com.spire.pdf.security.PdfEncryptionKeySize;import com.spire.pdf.security.PdfPermissionsFlags;public class Decrypt {public static void main(String[] args) throws Exception {//创建PdfDocument实例PdfDocument doc = new PdfDocument();//加载PDF文件doc.loadFromFile("C:\\Users\\Test1\\Desktop\\Encrypt.pdf", "myppt123");//对文件进行解密doc.getSecurity().encrypt("", "", PdfPermissionsFlags.getDefaultPermissions(),PdfEncryptionKeySize.Key_256_Bit, "edit");//保存文件doc.saveToFile("output/Decrypt.pdf");doc.close();}}
通过运行以上代码 , 我们能够成功地将设有打开口令的PDF文档进行解密 。
总结【Java 加密和解密PDF文档】Free Spire.PDF for Java除了可设置打开口令对文档进行保护外 , 还支持为PDF文档添加数字签名、验证数字签名有效性及添加骑缝章等功能 。 其他功能将在今后的教程里一一讲解 , 可关注作者方便日后查找 。 对代码或产品包导入有疑问 , 可评论或私信 。
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 学习大数据是否需要学习JavaEE
- 从事Java开发时发现基础差,是否应该选择辞职自学一段时间
- 2021年Java和Python的应用趋势会有什么变化?
- 普通大学计算机专业的本科生,该选择主攻前端还是Java
- F2FS面向Linux 5.11继续加强其加密及文件数据压缩功能
- Java语言会不会随着容器的兴起而衰落
- 大一有考研计算机专业的打算,该学习C++还是Java
- 专家推测执法机构是如何破解iPhone强大的加密并提取数据的
- 计算机专业的同学在掌握了Java之后,还可以学习哪门后端语言