如何使用 PyPDF2 解密 PDF?

新手上路,请多包涵

目前我正在使用 PyPDF2 作为依赖项。

我遇到了一些加密文件并像往常一样处理它们(在以下代码中):

 from PyPDF2 import PdfReader

reader = PdfReader(pdf_filepath)
if reader.is_encrypted:
    reader.decrypt("")
    print(len(reader.pages))

我的文件路径看起来像 “~/blah/FDJKL492019 21490 ,LFS.pdf” PDF.decrypt(“”) 返回 1,这意味着它是成功的。但是当它点击 print PDF.getNumPages() 时,它仍然会引发错误“PyPDF2.utils.PdfReadError:文件尚未解密”。

我如何摆脱这个错误?我可以通过双击打开 PDF 文件(默认使用 Adobe Reader 打开)。

原文由 Jin Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

回答我自己的问题:如果您的文件名中有任何空格,那么尽管返回成功代码,PyPDF 2 解密功能最终还是会失败。在通过 PyPDF2 运行 PDF 之前,尝试在命名 PDF 时坚持使用下划线。

例如,

而不是“FDJKL492019 21490,LFS.pdf”做类似“FDJKL492019_21490_,LFS.pdf”的事情。

原文由 Jin Lee 发布,翻译遵循 CC BY-SA 3.0 许可协议

此错误可能是由于 pdf 上的 128 位 AES 加密引起的,请参阅 查询 - 有没有办法绕过 pdf 上的安全限制?

一种解决方法是使用“qpdf”解密所有 isEncrypted pdf

 qpdf --password='' --decrypt input.pdf output.pdf

即使您的 PDF 没有密码保护,它可能仍然没有密码加密。上面的代码片段假设是这种情况。

原文由 Luke Rehmann 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题