我一直在Al Sweigart的著作《自动化无聊的东西》中学习,却因索引错误而茫然不知所措。我正在使用PyPDF2 tring打开一个加密的PDF文档。我知道这本书是2015年的书,所以我去https://pythonhosted.org/PyPDF2/PdfFileReader.html看看我是否缺少任何东西,而且一切似乎都是一样的,至少从我的判断中可以看出。所以我不确定这是怎么回事。这是我的代码...

import PyPDF2
pdfReader = PyPDF2.PdfFileReader(open('encrypted.pdf', 'rb'))
pdfReader.isEncrypted
True
pdfReader.getPage(0)
Traceback (most recent call last):
    File "<pyshell#65>", line 1, in <module>
pdfReader.getPage(0)
    File "/home/user67/.local/lib/python3.6/site-packages/PyPDF2/pdf.py", line 1176, in getPage
self._flatten()
    File "/home/user67/.local/lib/python3.6/site-packages/PyPDF2/pdf.py", line 1505, in _flatten
catalog = self.trailer["/Root"].getObject()
    File "/home/user67/.local/lib/python3.6/site-packages/PyPDF2/generic.py",    line 516, in __getitem__
return dict.__getitem__(self, key).getObject()
    File "/home/user67/.local/lib/python3.6/site-packages/PyPDF2/generic.py", line 178, in getObject
return self.pdf.getObject(self).getObject()
    File "/home/user67/.local/lib/python3.6/site-packages/PyPDF2/pdf.py", line 1617, in getObject
raise utils.PdfReadError("file has not been decrypted")
PyPDF2.utils.PdfReadError: file has not been decrypted
pdfReader.decrypt('rosebud')
1
pageObj = pdfReader.getPage(0)
Traceback (most recent call last):
    File "<pyshell#67>", line 1, in <module>
pageObj = pdfReader.getPage(0)
    File "/home/user67/.local/lib/python3.6/site-packages/PyPDF2/pdf.py",line 1177, in getPage
return self.flattenedPages[pageNumber]
IndexError: list index out of range


在询问我的问题之前,我在Google上进行了一些搜索,并发现此链接带有“建议的修复程序” https://github.com/mstamy2/PyPDF2/pull/359。但是,我是新来的,以了解解决方法。我不能以此为首。任何帮助,将不胜感激。

最佳答案

我想到了。该问题是由在解密IDLE shell中的文件之前运行“ pdfReader.getPage(0)”引起的。如果您删除该行,或者在收到错误后不使用该行重新开始,它将按预期工作。

关于python-3.x - PyPDF2,为什么会出现索引错误?列表索引超出范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50950825/

10-11 06:13