以下 this answer我试图用pdfBox解密pdf文档:
PDDocument pd = PDDocument.load(path);
if(pd.isEncrypted()){
    try {
        pd.decrypt("");
        pd.setAllSecurityToBeRemoved(true);
    } catch (Exception e) {
        throw new Exception("The document is encrypted,and we can't decrypt it.");
    }

这导致

Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider
at org.apache.pdfBox.pdmodel.PDDocument.openProtection(PDDocument.java:1601)
at org.apache.pdfBox.pdmodel.PDDocument.decrypt(PDDocument.java:948)
...
Caused by: java.lang.classNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
...

路径是正确的,所以我不知道发生了什么.
此外,如果我看看PDDocument.decrypt(String pw)方法,我发现这个:
这将解密文档.仅为兼容性原因提供此方法.用户应该使用新的安全层,特别是openProtection方法.

这是什么意思?有人可以举例说明如何使用pdfBox正确解密pdf文档?

解决方法

请参阅依赖关系列表:
https://pdfbox.apache.org/1.8/dependencies.html

你需要使用bouncycastle库.

<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcprov-jdk15</artifactId>
  <version>1.44</version>
</dependency>
<dependency>
  <groupId>org.bouncycastle</groupId>
  <artifactId>bcmail-jdk15</artifactId>
  <version>1.44</version>
</dependency>

在当前版本(1.8.9)中确实已经不再采用decrypt()调用.使用

pd.openProtection(new StandardDecryptionMaterial(""));

代替.

附加建议:下载源代码包.你会发现很多例子可以帮助你进一步.

java – pdfbox:试图解密PDF的更多相关文章

  1. Android – 按下后退按钮后停止AsyncTask并返回上一个Activity

    我有一个AsyncTask,我希望它按下后退按钮时执行.我还希望应用程序返回到之前显示的Activity.似乎我已经设法停止任务但应用程序没有返回到上一个活动.有任何想法吗?这是我的代码摘录问候.解决方法现在使用cancelListner

  2. Apache2的httpd.conf翻译

    ##这是Apache服务器主要配置文件。#参见以取得关于这些指令的详细信息##不要只是简单的阅读这些指令信息而不去理解它。#这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告。

  3. 怎样在php中使用PDF文档功能

    一对典型的用法:需求小册子电子商务发货单通过这个指南,你可以学会怎样使用php4中的PDF扩展来创建PDF文档。我们也把焦点放在用mysql数据来创建PDF文档。内容摘要安装PDFLib3.0.1和有PDF支持的PHP4.01pl2提取PDF文档安装PDFLib和有PDF支持的PHP。提取PDF文档现在我们已经作好了如飞地生成PDF文档的条件!

  4. JSP由浅入深(7)—— JSP Directives

    在前面的教程中,我们已经使用了java.util.Date。其实,在JSPs中也可以使用import语句,但是它的语法跟普通的Java是有些差别的。下面给出一个例子:Hello!Thetimeisnow上面的代码中第一行我们调用了一个“directive”。这个JSP“directive”是以

  5. 用PHP生成PDF文件 with FPDF

    下面是一个很简单的用FPDF创建一个pdf文件并添加一页的例子当然也可以用$pdf->open();来新建一个pdf文件但是在这里,Addpage()包含了open(),他同时完成了新建一个pdf文件和添加1页两个步骤上面例子里的define;定义了存放字体文件的目录具体下载了压缩包后就看到那个font文件夹了,只要指向那个文件夹就行了上面这段程序还不能显示任何东西现在来加两句

  6. PHP 5 数据对象 (PDO) 抽象层与 Oracle

    一名新PHP数据对象数据抽象层的原始开发人员为您简要介绍该抽象层,重点讲述与Oracle一起运行的情况。我们之所以提出了这种PHP数据对象的概念,是因为我们希望通过采用ZendEngine2先进的面向对象特性获得该API的一些更优秀的性能。PHP中的数据抽象层概念一点都算不上新;在Google中查询“PHPdatabaseabstraction”会找到大约83,200个匹配项。例如,PDO_OCI扩展会替代PDO扩展实现Oracle数据库API。向该文件中添加以下行:extension=pdo.so现在您

  7. 基于PHP与XML的PDF文档生成技术

    这篇文章主要给大家介绍了关于基于PHP与XML的PDF文档生成技术的相关资料,需要的朋友可以参考下

  8. 用PHP创建PDF中文文档

    我使用的是FPDF,下载了fpdf类库后,还要使用下面的中文类库才能支持中文,但只能使用一种中文字体。为此我烦恼了很长时间,现在终于搞定了,将TrueType字体转化为pt1字体使用:下面是在FPDF上找的一个中文类库:

  9. Python 操作pdf pdfplumber读取PDF写入Excel

    这篇文章主要介绍了Python 操作pdf pdfplumber读取PDF写入Excel,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以考察一下

  10. 用PHP编写PDF文档生成器

    >然后保存成PHP文件,在浏览器里进行浏览,PHP就会执行上面的代码,它产生一个新的PDF文件,并保存到指定的位置。现在我们分析一下什么的代码,要使用PHP创建PDF文件,有四个步骤:1,创建文档句柄;2,注册文档的字体和颜色;3,用PDFLib提供的函数向文件句柄写文字或画图;4,保存文档。在调用PDF_begin_page()函数和PDF_end_page()函数之间的代码是向PDF文档了写内容的,内容可以是文字、图象以及几何图形等。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部