如何阅读使用未知的随机所有者密码创建的PDF?

要求是一次处理一批PDF,并且成功使用用户密码对每个PDF进行加密。

但是,这些PDF以前是使用随机生成的动态所有者密码(不知道任何一个)加密的,以防止任何编辑。

我使用iText进行加密,如下所示:

byte[] userPass = "user".getBytes(); byte[] ownerPass = "owner".getBytes(); PdfReader reader = new PdfReader("Misc.pdf"); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("Processed_Encrypted.pdf")); stamper.setEncryption(userPass, ownerPass, PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA); stamper.close(); reader.close(); 

但是这段代码抛出了一个com.itextpdf.text.exceptions.BadPasswordException: PdfReader not opened with owner password

有人可以指导如何解决此错误/绕过所有者密码?

在这里,我想明确表示我们合法拥有这些PDF,因此不会犯下任何犯罪/黑客行为。

PS :解决方案不仅限于iText,也可以使用任何其他Java库( 免费或许可 )。

PdfReader有一个名为PdfReader的未记录的static boolean变量。 出于显而易见的原因,默认情况下此变量设置为false 。 您可以将此变量设置为true,如下所示:

 PdfReader.unethicalreading = true; 

从现在开始,PdfReader将忽略所有者密码的存在。 如果有用户密码,它只会抛出exception。

使用此风险需要您自担风险。

    Interesting Posts