使用PyPDF2读取某些PDF文件时出现以下错误。由于这些文件的机密性质,我无法分享,但我可以尝试提供有助于解决此问题的信息。
Stacktrace -
inputpdf = PdfFileReader(open(pdfpath, "rb"), strict=False)
File "/home/tata/.virtualenvs/obu/local/lib/python2.7/site-packages/PyPDF2/pdf.py", line 1084, in __init__
self.read(stream)
File "/home/tata/.virtualenvs/obu/local/lib/python2.7/site-packages/PyPDF2/pdf.py", line 1732, in read
num = readObject(stream, self)
File "/home/tata/.virtualenvs/obu/local/lib/python2.7/site-packages/PyPDF2/generic.py", line 74, in readObject
return BooleanObject.readFromStream(stream)
File "/home/tata/.virtualenvs/obu/local/lib/python2.7/site-packages/PyPDF2/generic.py", line 137, in readFromStream
raise utils.PdfReadError('Could not read Boolean object')
PdfReadError: Could not read Boolean object
似乎从generic.py中的以下函数引发了异常:
def readFromStream(stream):
word = stream.read(4)
if word == b_("true"):
return BooleanObject(True)
elif word == b_("fals"):
stream.read(1)
return BooleanObject(False)
else:
raise utils.PdfReadError('Could not read Boolean object')
打印变量单词会打印字符串 trai ,但我不确定此字符串代表什么。
由于PyPDF2项目似乎没有维护,有人可以帮我找到解决方案吗?
注意:请注意,这些PDF不受密码保护。
答案 0 :(得分:0)
似乎所有pdf都以某种方式加密。使用PyPDF2的github存储库中本期#53中引用的解决方案,我使用以下命令生成另一个pdf(原始pdf的解密版本) -
qpdf --password= --decrypt input.pdf output.pdf
然后阅读output.pdf为我工作。我不确定如何事先确定pdf是否加密(或在此特定状态下)。但是这个解决方案暂时解决了这个问题。