前言

在日常办公时,为了保护文档不被他人篡改,我们可为文档设置打开口令,即加密。同时,因需要我们也可对加密文档进行解密,以便能够查看和编辑文档。本文将通过Java程序来演示如何对PDF文档进行加密和解密。

此次代码示例用到的控件是Free Spire.PDF for Java。该控件主要功能在于帮助开发人员在Java应用程序中生成和操作PDF文档,且运行环境无需安装Adobe Acrobat。

Jar包安装及导入

在运行代码前,需将Jar包导入IDEA中。导入方式有两种:其 一,在官网上下载Free Spire.PDF for Java产品包,解压后将lib文件夹下的Spire.Pdf.jar手动导入IDEA中;其 二,在IDEA中创建一个Maven项目,然后在pom.xml文件中键入以下代码,最后点击“Import Changes”即可。

com.e-iceblue

http://repo.e-iceblue.cn/repository/maven-public/

e-iceblue

spire.pdf.free

3.9.0

最终导入效果图如下:

代码示例

【示例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:UsersTest1DesktopSample.pdf");

//对文件进行加密

PdfEncryptionKeySize keySize = PdfEncryptionKeySize.Key_128_Bit;//设置KeySize

String 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:UsersTest1DesktopEncrypt.pdf", "myppt123");

//对文件进行解密

doc.getSecurity().encrypt("", "", PdfPermissionsFlags.getDefaultPermissions(),

PdfEncryptionKeySize.Key_256_Bit, "edit");

//保存文件

doc.saveToFile("output/Decrypt.pdf");

doc.close();

}

}

通过运行以上代码,我们能够成功地将设有打开口令的PDF文档进行解密。

总结

Free Spire.PDF for Java除了可设置打开口令对文档进行保护外,还支持为PDF文档添加数字签名、验证数字签名有效性及添加骑缝章等功能。其他功能将在今后的教程里一一讲解,可关注作者方便日后查找。对代码或产品包导入有疑问,可评论或私信。

java 解密pdf文件_Java 加密和解密PDF文档相关推荐

  1. java 创建word文件_java基于feemarker 生成word文档(超级简单)

    问题由来: 开发个新需求,需要按规定导出word文档,文档截图如下 因为之前没做过这个,一脸懵B啊,导出excel和txt倒是经常接触到,对于这个word这种格式不严谨的文件怎么处理呢? 技术选型:可 ...

  2. java修改ppt格式_Java 加密、解密PPT文档

    文档加密常通过设置文档打开密码.启用文档编辑时的权限密码等方式:而解密则通过删除原有文档的密码或在此基础上重置新的密码.以下文章内容,将通过Java程序来实现通过以上方式来加密.解密PPT文档. 使用 ...

  3. java html5转pdf文件_Java 将Html转为PDF

    本文介绍如何在Java程序中将html文件转换成PDF文件.转换时,需要注意以下两点: 一.需要使用转换插件 二.需要使用到PDF 库,Spire.PDF for Java 版本: 3.6.6 及以后 ...

  4. java调用word模板文件_Java使用模板导出word文档

    Java使用模板导出word文档 需要导入freemark的jar包 使用word模板,在需要填值的地方使用字符串代替,是因为word转换为xml文件时查找不到要填入内容的位置.尽量不要在写字符串的时 ...

  5. java jdom解析xml文件_Java 使用JDOM解析XML文档

    使用JDOM解析XML文档 JDOM是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包.下面我们来看一下怎么使用 JDOM来解析XML文档. 首先下载JDOM的jar包,并导 ...

  6. pdf文件怎么去除水印,pdf去除水印方法介绍

    pdf文件怎么去除水印?pdf文件是目前被普遍使用的一种文件格式,我们在工作中也会时常需要下载pdf文件进行使用,当我们遇到被添加了水印的pdf文件时,该如何将水印去除呢?如果屏幕前的你不知道的话就看 ...

  7. Java 将xml模板动态填充数据转换为word文档

    需要用到的jar包: commons-codec-1.10.jar freemarker-2.3.21.jar jacob-1.6.jar 实现思路: 1.先将word文档另存为 : Word 200 ...

  8. PDF加密、解密内幕(二)- PDF文件口令加密内幕

    0 几个重要概念 全局加密密钥,简称为全局密钥,该全局密钥由加密字典对象和你输入的口令生成,用来生成对象加密密钥. 对象加密密钥,简称为对象密钥,是用来实际加密PDF文件内容的密钥,不同于上篇PDF加 ...

  9. PDF加密、解密内幕(二) - PDF文件口令加密内幕

    PDF加密.解密内幕(二) - PDF文件口令加密内幕 0 几个重要概念 全局加密密钥,简称为全局密钥,该全局密钥由加密字典对象和你输入的口令生成,用来生成对象加密密钥. 对象加密密钥,简称为对象密钥 ...

  10. c语言程序存为bin程序,对文件进行加密与解密(c语言)-bin文件打开

    操作界面 加密前的文件: 加密后的文件 将加密后的文件解密后即可还原 初始密码为:hujing 开发环境:vc6.0 操作系统:windows 源代码 /*********************** ...

最新文章

  1. 0、为什么推荐学习PowerShell?
  2. 几个SQL命令的使用
  3. python使用缩进作为语法边界一般建议怎样缩进-python基础自测挑战题,适合刚起步不久的小猿!...
  4. 环境/---Liunx环境安装
  5. linux gcc 简单使用记录01
  6. oracle 分组 top10 sql,oracle sql 合龙 分组 聚合函数
  7. C++函数和类的封装
  8. 黑马博客——详细步骤(三)项目功能的实现之新增用户
  9. 【产品介绍】“弹性裸金属服务器”到底有那些特性?
  10. 【转】BW的星型数据模型
  11. 2017下半年,一二线互联网公司Android面试题汇总
  12. matlab绘制等间距同心圆,CDR做出等距离的同心圆的四种方法
  13. 图解十大机器学习算法
  14. ACCESS实例1——简易文档管理器
  15. XJOI contest800
  16. SuperMap iDesktop常见问题解答集锦(八)
  17. Python实现爬取下载百度图片
  18. win10 开teredo
  19. 明天起,鄂尔多斯这些地方要停电!涉及伊旗、达旗等6个旗区
  20. HTML基础知识笔记-01

热门文章

  1. 【系列二之图像处理系列】波形处理(3)
  2. Maven默认的生命周期
  3. React躬行记(8)——样式
  4. SNF软件开发机器人2018最新更新内容
  5. web工程was部署
  6. 函数式编程基础---高阶函数和偏函数
  7. 【HackerRank】Cut the tree
  8. 几行python代码实现Windows软件卸载
  9. 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
  10. ubuntu16.04 修改本机密码