博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 加密、解密PDF文档
阅读量:3574 次
发布时间:2019-05-20

本文共 2033 字,大约阅读时间需要 6 分钟。

本篇文章将介绍通过Java来设置PDF文档保护的方法。我们可以设置仅用于查阅文档的密码,即该通过该密码打开文档仅用于文档阅读,无法编辑;也可以设置文档编辑权限的密码,即通过该密码打开文档时,文档为可编辑状态。

使用工具:(免费版)

首先,在pom.xml文件中配置Maven仓库路径。

com.e-iceblue
e-iceblue
http://repo.e-iceblue.com/nexus/content/groups/public/

引入免费版本(免费版有页数限制,不能超出10页): 

e-iceblue
spire.pdf.free
2.2.2

 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 EncryptPDF {    public static void main(String[] args) {                //创建PdfDocument实例        PdfDocument doc = new PdfDocument();        //加载PDF文件        doc.loadFromFile("sample.pdf");        //加密PDF文件        PdfEncryptionKeySize keySize = PdfEncryptionKeySize.Key_128_Bit;        String openPassword = "123456";//打开文档时,仅用于查看文档        String permissionPassword = "test";//打开文档时,可编辑文档        EnumSet flags = EnumSet.of(PdfPermissionsFlags.Print, PdfPermissionsFlags.Fill_Fields);        doc.getSecurity().encrypt(openPassword, permissionPassword, flags, keySize);        //保存文件        doc.saveToFile("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 DecryptPDF {    public static void main(String[] args) throws Exception {                //创建PdfDocument实例        PdfDocument doc = new PdfDocument();        //加载带密码保护的PDF文件        doc.loadFromFile("Encrypt.pdf", "123456");        //解除文档中的密码保护        doc.getSecurity().encrypt("", "", PdfPermissionsFlags.getDefaultPermissions(), PdfEncryptionKeySize.Key_256_Bit, "test");                //保存文件        doc.saveToFile("Decrypt.pdf");        doc.close();    }}

运行程序后,生成的文档将不再受密码保护。

 

参考:

 

转载地址:http://pbpgj.baihongyu.com/

你可能感兴趣的文章
vue路由高亮的两种方式
查看>>
vue router 报错: Uncaught (in promise) NavigationDuplicated {_name:""NavigationDuplicated"... 的解决方法
查看>>
vue跳转页面的两种方式
查看>>
存储器题目解析(持续更新中....)
查看>>
存储器知识要点
查看>>
Cache模拟器的实现
查看>>
设计模式七大原则
查看>>
SpringBoot入门(二)场景启动器
查看>>
SpringBoot入门--自动配置
查看>>
自动配置原理
查看>>
TCP协议
查看>>
关于Linux系统使用遇到的问题-1:vi 打开只读(readonly)文件如何退出保存?
查看>>
spring注解版(一)
查看>>
SpringBoot中访问控制层(controller)得不到Json数据
查看>>
BFC(Block Formatting Context)
查看>>
什么是作用域,什么是闭包,什么是作用域链
查看>>
惰性求值,面向对象
查看>>
数据结构之列表
查看>>
es5中的arguments对象
查看>>
git本地仓库和远程仓库关联,分支重命名
查看>>