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

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

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

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

    1

    pip install pdfminer

    python读取pdf的文件如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    # 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学习网