目前,我正在使用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: File尚未解密“。
如何消除此错误?我可以通过双击打开PDF文件(默认情况下用Adobe打开)。
发布于 2014-10-07 19:12:22
要回答我自己的问题:如果您的文件名中有任何空格,那么尽管返回了成功的代码,PyPDF 2解密函数最终还是会失败。在通过PyPDF2运行PDF之前,尝试在命名PDF时坚持使用下划线。
例如,
而不是"FDJKL492019 21490,LFS.pdf“做类似于"FDJKL492019_21490_,LFS.pdf”之类的事情。
发布于 2015-08-24 21:11:05
此错误可能是由于pdf上128位AES加密造成的,请参阅查询--是否有办法绕过pdf上的安全限制?。
一个解决方法是用"qpdf“解密所有isEncrypted pdfs。
qpdf --password='' --decrypt input.pdf output.pdf即使您的PDF没有显示密码保护,它仍然可能是加密的没有密码。上面的片段假设情况是这样的。
发布于 2018-01-21 08:26:11
以下代码可以解决此问题:
import os
from PyPDF2 import PdfReader
filename = "example.pdf"
reader = PdfReader(filename)
if reader.is_encrypted:
try:
reader.decrypt("")
print("File Decrypted (PyPDF2)")
except:
command = (
"cp "
+ filename
+ " temp.pdf; qpdf --password='' --decrypt temp.pdf "
+ filename
+ "; rm temp.pdf"
)
os.system(command)
print("File Decrypted (qpdf)")
reader = PdfReader(filename)
else:
print("File Not Encrypted")https://stackoverflow.com/questions/26242952
复制相似问题