【发布时间】:2021-10-15 23:38:57
【问题描述】:
我正在尝试使用 iText 7 知识库站点 (https://kb.itextpdf.com/home/it7kb/examples/encrypting-decrypting-pdfs) 中提供的示例在没有所有者密码的情况下解密受密码保护的 pdf,但我的示例程序抛出了 BadPasswordException 错误。
受密码保护的 pdf 具有 256 位 AES 密码安全性。该程序正在使用 itext7-core v7.1.16 依赖项。
public class DecryptPdf3 {
public static final String SRC = "./src/main/resources/pdfs/THISISATEST_PWP.pdf";
public static final String DEST = "./target/sandbox/security/decrypt_pdf3.pdf";
public static void main(String[] args) throws Exception {
File file = new File(DEST);
file.getParentFile().mkdirs();
new DecryptPdf3().manipulatePdf(DEST);
}
protected void manipulatePdf(String dest) throws Exception {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC).setUnethicalReading(true), new PdfWriter(dest));
pdfDoc.close();
}
}
Exception in thread "main" com.itextpdf.kernel.crypto.BadPasswordException: Bad user password. Password is not provided or wrong password provided. Correct password should be passed to PdfReader constructor with properties. See ReaderProperties#setPassword() method.
at com.itextpdf.kernel.crypto.securityhandler.StandardHandlerUsingAes256.initKeyAndReadDictionary(StandardHandlerUsingAes256.java:253)
at com.itextpdf.kernel.crypto.securityhandler.StandardHandlerUsingAes256.<init>(StandardHandlerUsingAes256.java:89)
at com.itextpdf.kernel.pdf.PdfEncryption.<init>(PdfEncryption.java:247)
at com.itextpdf.kernel.pdf.PdfReader.readDecryptObj(PdfReader.java:1300)
at com.itextpdf.kernel.pdf.PdfReader.readPdf(PdfReader.java:734)
at com.itextpdf.kernel.pdf.PdfDocument.open(PdfDocument.java:1945)
at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:331)
at com.itextpdf.kernel.pdf.PdfDocument.<init>(PdfDocument.java:299)
【问题讨论】:
-
正如您在堆栈跟踪中看到的,在阅读器中打开源 PDF 已经存在问题。因此,您的问题与您删除密码的任务无关,iText 无法读取您的文件。如需更详细的分析,请分享相关 PDF。
-
它没有让我上传安全设置的文件或图像,但我会在这里列出。
-
它没有让我上传安全设置的文件或图像,但我会在这里列出它们。使用 Adobe Acrobat Pro DC v 2021.005.60020 安全方法=密码安全文档打开密码=是权限密码=否打印=高分辨率其他安全设置=允许
-
如需更详细的分析,请分享相关 PDF。 Adobe Acrobat 关于安全设置的意见没有帮助。
-
@michadev “它没有让我上传文件” - 堆栈溢出不允许上传非图像(并且图像只有在具有一定的最小值时才能显示代表)。通常通过将 PDF 上传到公共文件共享(例如,谷歌驱动器或投递箱上的公共共享)并在此处共享链接来共享 PDF。
标签: java pdf itext7 password-protection