Itext PDFReader 读取 256 位 AES 加密 pdf



我在尝试打开 pdf 文件以读取其内容并将数据映射回 pdf 时收到错误。错误是: com.itextpdf.text.exceptions.InvalidPdfException: 未知加密类型 R = 6 at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:631)

我正在使用java 1.6,Itext 5.4.1和bouncycastle 1.48。pdf 创建为 1.7 版,并加密为 256 位 AES。有没有人在 Java 中有一个示例来阅读这种类型的 ecncrypted pdf。

目前,我的代码可以读取所有pdf以前的版本而没有任何错误,以前的版本以128位加密进行加密。

        PdfReader reader = new PdfReader(src,"passwordtext".getBytes());
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
        AcroFields form = stamper.getAcroFields(); 

任何帮助,不胜感激。

修订版 6 包含在 PDF 2.0 的"ISO 32000-2"中。由于PDF 2.0还不是官方标准,iText不支持它。现在你可以问问自己,你如何以及为什么已经有一个使用该标准的文档?Adobe已经实施了它,即使它不是公开可用的,也没有发布(因此是由于变化),这对他们来说是一个糟糕的决定。标准发布后,iText 也将支持它,但您必须等待。在此之前,使用 Adobe Acrobat 使用"较低"的加密算法(例如修订版 1-5)重新生成该文档。

2021 年更新:该标准已于 2017 年发布,因此修订版 6 很好。

最新更新