• pdf 转 word


    编程环境:
    attrs==17.4.0
    lxml==4.1.1
    pdfminer3k==1.3.4
    pluggy==0.6.0
    ply==3.11
    py==1.5.2
    pytest==3.4.1
    python-docx==0.8.6
    six==1.11.0
    from pdfminer.pdfparser import PDFParser, PDFDocument
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.layout import LAParams
    from pdfminer.converter import PDFPageAggregator
    from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
    from docx import Document
    
    document = Document()
    
    
    def parse():
        # rb以二进制读模式打开本地pdf文件
        fn = open('./111.pdf', 'rb')
        # 创建一个pdf文档分析器
        parser = PDFParser(fn)
        # 创建一个PDF文档
        doc = PDFDocument()
        # 连接分析器 与文档对象
        parser.set_document(doc)
        doc.set_parser(parser)
    
        # 提供初始化密码doc.initialize("lianxipython")
        # 如果没有密码 就创建一个空的字符串
        doc.initialize("")
        # 检测文档是否提供txt转换,不提供就忽略
        if not doc.is_extractable:
            raise PDFTextExtractionNotAllowed
    
        else:
            # 创建PDf资源管理器
            resource = PDFResourceManager()
            # 创建一个PDF参数分析器
            laparams = LAParams()
            # 创建聚合器,用于读取文档的对象
            device = PDFPageAggregator(resource, laparams=laparams)
            # 创建解释器,对文档编码,解释成Python能够识别的格式
            interpreter = PDFPageInterpreter(resource, device)
            # 循环遍历列表,每次处理一页的内容
            # doc.get_pages() 获取page列表
            for page in doc.get_pages():
                # 利用解释器的process_page()方法解析读取单独页数
                interpreter.process_page(page)
                # 使用聚合器get_result()方法获取内容
                layout = device.get_result()
                # 这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象
                for out in layout:
                    # 判断是否含有get_text()方法,获取我们想要的文字
                    if hasattr(out, "get_text"):
                        # print(out.get_text(), type(out.get_text()))
                        content = out.get_text().replace(u'xa0', u' ')  # 将'xa0'替换成u' '空格,这个xa0就是&nbps空格
                        # with open('test.txt','a') as f:
                        #     f.write(out.get_text().replace(u'xa0', u' ')+'
    ')
                        document.add_paragraph(
                            content, style='ListBullet'  # 添加段落,样式为unordered list类型
                        )
                    document.save('./111.docx')  # 保存这个文档
    
    
    if __name__ == '__main__':
        parse()
    

      

  • 相关阅读:
    redis后台启动配置
    Go匿名函数
    Java中的ExceptionInInitializerError异常及解决方法
    数据库备份工具mysqldump重要参数详解
    Nginx初识
    找不到或无法加载主类
    类加载机制与反射(二)
    JavaScript 数据结构与算法之美
    JavaScript 数据结构与算法之美
    JavaScript 数据结构与算法之美
  • 原文地址:https://www.cnblogs.com/hello-python2020/p/14068460.html
Copyright © 2020-2023  润新知