# coding:utf-8
from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager,PDFPageInterpreter
from pdfminer.pdfdevice import PDFDevice
from pdfminer.layout import LAParams
from pdfminer.converter import PDFPageAggregator
fp = open("1.pdf","rb") # 打开对象,使用二进制方式
parser = PDFParser(fp) # 创建对应的解释器,传入文件对象,可理解为解释文件
doc = PDFDocument() # 创建文档对象
parser.set_document(doc) # 两步方法将fp的解释器和doc文档关联起来
doc.set_parser(parser) # 两步方法将fp的解释器和doc文档关联起来
doc.initialize() # 关联了解释器的文档,进行初始化
resource = PDFResourceManager() # 创建pdf的资源管理器
laparams = LAParams() # 创建pdf的参数分析器
device = PDFPageAggregator(resource,laparams=laparams) # 使用聚合器将资源管理器和参数分析器聚合在一起
interpreter = PDFPageInterpreter(resource,device) # 创建页面解析器,将资源管理器和聚合其结合在一起
for page in doc.get_pages(): # 获取文档对象的每一页
interpreter.process_page(page) # 使用页面解析器解析每一页
layout = device.get_result() # 使用聚合其获取解析的结果
for out in layout: # 遍历获取的结果
print(out.get_text()) # 输出