Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以用iText重置忘记的所有者密码吗?_Java_Pdf_Itext - Fatal编程技术网

Java 我可以用iText重置忘记的所有者密码吗?

Java 我可以用iText重置忘记的所有者密码吗?,java,pdf,itext,Java,Pdf,Itext,通过iText,我可以使用Java打开pdf并编写它。如果pdf有所有者密码,我仍然可以打开它,但无法写入 很明显,内容是可读的,在这一点上,您似乎可以简单地将文档写入一个新文件。iText不允许这样做,它抛出了一个错误的密码异常。有办法解决这个问题吗?听起来PDF很可能是加密的,并且设置了所有者密码,但没有设置用户密码。如果是这样的话,那么iText做的是正确的,因为在将文档写入新文件之前,必须提供所有者密码才能解密文件(相比之下,只提供用户密码,在这种情况下,什么都不提供,将允许您查看PDF

通过iText,我可以使用Java打开pdf并编写它。如果pdf有所有者密码,我仍然可以打开它,但无法写入


很明显,内容是可读的,在这一点上,您似乎可以简单地将文档写入一个新文件。iText不允许这样做,它抛出了一个错误的密码异常。有办法解决这个问题吗?

听起来PDF很可能是加密的,并且设置了所有者密码,但没有设置用户密码。如果是这样的话,那么iText做的是正确的,因为在将文档写入新文件之前,必须提供所有者密码才能解密文件(相比之下,只提供用户密码,在这种情况下,什么都不提供,将允许您查看PDF,有时还可以对其执行其他操作,如打印和复制/粘贴)

大多数(如果不是全部的话)声誉良好的工具包都将尊重加密。然而,有一些不太严格的工具允许密码被“断开”。这通常是最好避免的,但这样的工具确实存在


另一个选项是,假设文档的权限已设置为用户密码允许打印,则可以使用基于打印机驱动程序的转换SDK(如果您获得了大量这些文件)或简单地手动打印(如果您只获得了一次),将PDF打印为新的PDF。将PDF打印到另一个PDF是一个有点不安全的过程,因为您必须注意管理Acrobat的实例,但如果绝对必要,可以以有限的方式完成。

通过删除抛出的BadPasswordException,我能够成功保存一个拥有所有者密码的PDF。

您是正确的,所有者密码,但没有用户密码。我想问的是,一旦打开文档,是否可以绕过所有者密码以另存为不同的PDF。看起来答案基本上是“是的,但你不应该这么做”