Traceback (most recent call last): File "D:\Python\程序练习\修改后的程序\解码.py", line 28, in <module> for page in doc.get_pages(): AttributeError: 'PDFDocument' object has no attribute 'get_pages'
时间: 2024-02-09 08:12:15 浏览: 23
如果你使用的是 pdfminer.six,那么代码中应该使用 `PDFPage.get_pages()` 方法来获取 PDF 文件的所有页面。可以修改代码如下:
```python
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator
from pdfminer.pdfpage import PDFPage
# 打开一个 PDF 文件
fp = open('example.pdf', 'rb')
# 创建一个 PDF 解析器对象
parser = PDFParser(fp)
# 创建一个 PDF 文档对象
doc = PDFDocument(parser)
# 创建一个 PDF 资源管理器对象
rsrcmgr = PDFResourceManager()
# 创建一个 PDF 设备对象
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 创建一个 PDF 解释器对象
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 处理每一页
for page in PDFPage.get_pages(fp):
interpreter.process_page(page)
layout = device.get_result()
for lt_obj in layout:
if hasattr(lt_obj, 'get_text'):
print(lt_obj.get_text())
# 关闭 PDF 文件
fp.close()
```
其中,`PDFPage.get_pages()` 方法可以直接从文件对象中获取 PDF 文件的所有页面,不需要先创建 PDF 文档对象。
如果你使用的是 pdfminer3k,那么代码中应该使用 `PDFDocument.get_pages()` 方法来获取 PDF 文件的所有页面。可以修改代码如下:
```python
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFPageInterpreter, PDFResourceManager
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator
# 打开一个 PDF 文件
fp = open('example.pdf', 'rb')
# 创建一个 PDF 解析器对象
parser = PDFParser(fp)
# 创建一个 PDF 文档对象
doc = PDFDocument(parser)
# 创建一个 PDF 资源管理器对象
rsrcmgr = PDFResourceManager()
# 创建一个 PDF 设备对象
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 创建一个 PDF 解释器对象
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 处理每一页
for page in doc.get_pages():
interpreter.process_page(page)
layout = device.get_result()
for lt_obj in layout:
if hasattr(lt_obj, 'get_text'):
print(lt_obj.get_text())
# 关闭 PDF 文件
fp.close()
```
其中,`PDFDocument.get_pages()` 方法可以直接从 PDF 文档对象中获取 PDF 文件的所有页面。