Traceback (most recent call last): File "D:\Python\程序练习\修改后的程序\解析1.py", line 50, in <module> layout = device.get_result() AttributeError: 'TextConverter' object has no attribute 'get_result'
时间: 2024-02-11 17:06:20 浏览: 30
在pdfminer库中,`TextConverter`对象没有`get_result`方法,而是使用`io.StringIO`对象中的`getvalue`方法来获取转换后的文本。因此,需要将代码中的`layout = device.get_result()`修改为`layout = device.outfp.getvalue()`。下面是修改后的代码:
```python
import io
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.converter import TextConverter
import sys
# 创建一个文本输出流,包装标准输出
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
# 打印包含特殊字符的字符串
s = 'PDF文件头信息:\xae'
print(s)
# 打开PDF文件
pdf_file = open('x1/2023凯程333教育综合应试解析-外国教育史(OCR).pdf', 'rb')
# 创建一个PDF解析器对象
parser = PDFParser(pdf_file)
# 创建一个PDF文档对象
document = PDFDocument(parser)
# 检查文档是否可用
if not document.is_extractable:
raise PDFTextExtractionNotAllowed
# 创建一个PDF资源管理器对象
rsrcmgr = PDFResourceManager()
# 创建一个PDF设备对象
outfp = io.StringIO()
device = TextConverter(rsrcmgr, outfp, laparams=LAParams())
# 创建一个PDF解释器对象
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 打印PDF文件头信息
print('PDF文件头信息:')
for key, value in document.info[0].items():
try:
print(f'{key}: {value}')
except UnicodeEncodeError:
print(f'{key}: {" ".join(value.split())}')
# 打印PDF文件体信息
for page in PDFPage.create_pages(document):
interpreter.process_page(page)
layout = outfp.getvalue()
print(layout)
# 关闭PDF文件
pdf_file.close()
```
请注意,修改后的代码中的`TextConverter`对象的第二个参数是`outfp`,而不是`io.StringIO()`。这样做的目的是将转换后的文本写入`outfp`对象,以便在后面使用`getvalue()`方法获取转换后的文本。