python 解析pdf文档的首、尾页

1.如何解析指定页面而不是文档的全部?

2.利用哪些三方库?


一、PDF文档解析

1.将输入尾的文档提取出首页和尾页(import PyPDF2 )

def getdespdf(self,path):
       # print("输出路径为:", self.file_path_out)
        fp=open(path,"rb")   #打开输入文件路径
        fr=PdfFileReader(fp) #读取pdf 输入流
        output=PdfFileWriter() #输出流
        lastpage = fr.getNumPages() #根据输入流得到pdf文档的总页数
        end_index = lastpage - 1
       # testnu=fr.getPageNumber()
        pages_index =[0,end_index] #首页和尾页的 index 组成一个元组
        for i in pages_index:
            output.addPage(fr.getPage(i)) #取到首页和尾页,加载进输出流
        outputstream = open(self.file_path_out,"wb") #确定提取后需要保存到的位置
        output.write(outputstream)#保存首页和尾页 得到一个新的pdf文件
        #closed stream
        outputstream.close()   #常规操作,关闭流
        fp.close()

2.解析新组成的pdf,并返回内容字符串

 def parsein(self,path):
        result_text = []
        fp_in = open(path, 'rb')  #打开文件
        parser = PDFParser(fp_in) #pdf解析器
        doc = PDFDocument()  #创建一个文档对象
        # 连接分析器与文档对象
        parser.set_document(doc)
        doc.set_parser(parser)
        # 提供初始化密码
        doc.initialize()

        # 检测文档是否提供txt转换,不提供就忽略,功能不需要
        #if not doc.is_extractable:
        #  raise PDFTextExtractionNotAllowed
        #else:
        # 创建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)
            # 接受该页面的LTpage对象
            layout = device.get_result()

            for x in layout:
                if (isinstance(x, LTTextBoxHorizontal)):
                   # with open(r'parseresult.txt', 'a') as f:
                    results = x.get_text() #str类型
                   #f.write(results + "\n")
                    result_text.append(results) #之后转换为二进的list类型
        return result_text  #这里返回的是list类型

猜你喜欢

转载自blog.csdn.net/qq_28859425/article/details/84066666