使用iText,我可以使用Java打开pdf并编写它。如果pdf有所有者密码,我仍然可以打开它,但无法写入。
显然,内容是可读的,似乎您可以简单地将文档写入新文件。 iText不允许这样做,它会抛出一个错误的密码异常。有办法解决这个问题吗?
答案 0 :(得分:3)
通过删除BadPasswordException的抛出,我能够成功保存具有所有者密码的pdf。
答案 1 :(得分:0)
听起来PDF可能已加密并且设置了所有者密码但未设置用户密码。如果是这种情况,那么iText正在做正确的事情,因为必须提供所有者密码才能在将文档写入新文件之前解密文件(相比之下只提供用户密码,在这种情况下,什么都不允许)您可以查看PDF并有时对其执行其他操作,如打印和复制/粘贴)。
大多数(如果不是全部)知名工具包都会尊重加密。然而,有一些不太谨慎的工具允许密码“被中断”。通常最好避免这种情况,但确实存在这样的工具。
另一个选项,假设已设置文档的权限以便用户密码允许打印,则可以使用基于打印机驱动程序的转换SDK将PDF打印到新的PDF(如果您获得了大量这些文件)或简单地手动打印(如果你只在蓝色月亮中获得它们一次)。将PDF打印到另一个PDF是一个有点过程的过程,因为您必须注意管理Acrobat的实例,但如果绝对必要,可以以有限的方式完成。