• 技术文章 >常见问题 >Python常见问题

    python中怎么将pdf内容显示出来?

    yangyang2020-05-22 10:07:35原创3172

    python读取pdf文件需要使用pdfminer库,安装pdfminer库的命令如下:

    pip install pdfminer

    python读取pdf的文件如下:

    # coding=utf-8
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
    import time
    time1=time.time()
    import os.path
    from pdfminer.pdfparser import PDFParser,PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.layout import LTTextBoxHorizontal,LAParams
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    result=[]
    class CPdf2TxtManager():
      def __init__(self):
        '''''
        Constructor
        '''
      def changePdfToText(self, filePath):
        file = open(path, 'rb') # 以二进制读模式打开
        #用文件对象来创建一个pdf文档分析器
        praser = PDFParser(file)
        # 创建一个PDF文档
        doc = PDFDocument()
        # 连接分析器 与文档对象
        praser.set_document(doc)
        doc.set_parser(praser)
        # 提供初始化密码
        # 如果没有密码 就创建一个空的字符串
        doc.initialize()
        # 检测文档是否提供txt转换,不提供就忽略
        if not doc.is_extractable:
          raise PDFTextExtractionNotAllowed
        # 创建PDf 资源管理器 来管理共享资源
        rsrcmgr = PDFResourceManager()
        # 创建一个PDF设备对象
        laparams = LAParams()
        device = PDFPageAggregator(rsrcmgr, laparams=laparams)
        # 创建一个PDF解释器对象
        interpreter = PDFPageInterpreter(rsrcmgr, device)
        pdfStr = ''
        # 循环遍历列表,每次处理一个page的内容
        for page in doc.get_pages(): # doc.get_pages() 获取page列表
          interpreter.process_page(page)
          # 接受该页面的LTPage对象
          layout = device.get_result()
          for x in layout:
            if hasattr(x, "get_text"):
              # print x.get_text()
              result.append(x.get_text())
              fileNames = os.path.splitext(filePath)
              with open(fileNames[0] + '.txt','wb') as f:
                results = x.get_text()
                print(results)
                f.write(results + '\n')
    if __name__ == '__main__':
      '''''
       解析pdf 文本,保存到txt文件中
      '''
      path = u'C:/data3.pdf'
      pdf2TxtManager = CPdf2TxtManager()
      pdf2TxtManager.changePdfToText(path)
      # print result[0]
      time2 = time.time()
      print u'ok,解析pdf结束!'
      print u'总共耗时:' + str(time2 - time1) + 's'

    pdf文件如下:

    python读取结果如下:

    更多Python知识请关注Python自学网

    专题推荐:python
    品易云
    上一篇:sublime不能运行python代码怎么解决? 下一篇:python中链表怎么表示?

    相关文章推荐

    • python中输入年月日判断星期几?• 如何从github下载安装python库?• python如何用循环输入10个数?• python中怎么改变画笔颜色?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网