gpt4 book ai didi

java - PDFBox 命令行选项无法使用有效用户密码解密 PDF 文件

转载 作者:行者123 更新时间:2023-11-30 02:08:18 26 4
gpt4 key购买 nike

我正在使用 PDFBox 2.0.8 并尝试使用提供给 jar 文件的命令行选项来进行 PDF 解密。有几个 PDF 文件会导致错误,说这些文件只能使用所有者密码解密(好吧),但是我猜想,我可以使用使用 QPDF 的在线工具删除 PDF 密码。

现在我关心的是我是否可以使用 PDFBox 的一些相同选项来解密 PDF,而不必担心所有者/用户密码保留? (我想是的,因为相同的密码可以使用 Acrobat 打开 PDF,并通过提供相同的密码保存解密的 PDF 副本)。

我当前的命令行示例

 java -jar "D:\pdfbox.jar" Decrypt -password xxxxxxxx 
"D:\uploads\Jjre2pJsC-7KerheiZ8OUt079E7d4dlS.pdf"

我遇到的异常:

  2018-06-13 - 09:52:30 - error: SaveDecryptedPDF > Failed > Error: Command 
failed: java -jar "D:\pdfbox.jar" Decrypt -password xxxxxxxx
"D:\uploads\Jjre2pJsC-7KerheiZ8OUt079E7d4dlS.pdf"
Exception in thread "main" java.io.IOException: Error: You are only allowed to
decrypt a document with the owner password.
at org.apache.pdfbox.tools.Decrypt.decrypt(Decrypt.java:154)
at org.apache.pdfbox.tools.Decrypt.main(Decrypt.java:64)
at org.apache.pdfbox.tools.PDFBox.main(PDFBox.java:52)

如果我有有效的 PDF 密码并且我能够通过在 PDF 阅读器应用程序中手动提供密码来打开 PDF 文件,请各位建议我是否可以在不受所有者/用户密码约束的情况下实现解密。

最佳答案

显然,从技术上讲,用户和所有者的密码都允许解密整个文档。但语义上存在差异,使用用户密码打开 PDF 的人与使用所有者密码打开同一 PDF 的人相比,仅具有对 PDF 的有限访问权限。

不同的库和工具在不同程度上遵循这些语义。有些甚至完全忽略了区别。

另一方面,PDFBox Decrypt 工具明确尝试遵循这些语义,并且只允许所有者解密 PDF:

AccessPermission ap = document.getCurrentAccessPermission();
if(ap.isOwnerPermission())
{
document.setAllSecurityToBeRemoved(true);
document.save( outfile );
}
else
{
throw new IOException(
"Error: You are only allowed to decrypt a document with the owner password." );
}

(org.apache.pdfbox.tools.Decrypt方法解密)

因此,使用该工具,仅提供用户密码是无法解密 PDF 的。不过,如果您准备更改工具代码并重新编译命令行工具,则必要的更改是显而易见的。

关于java - PDFBox 命令行选项无法使用有效用户密码解密 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50829592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com