Python代码教你批量将PDF转为Word - 无名小妖

wumingxiaoyao 2021-10-31 原文


Python代码教你批量将PDF转为Word

很多时候在学习时发现许多文档都是PDF格式,PDF格式却不利于学习使用,因此需要将PDF转换为Word文件,但或许你从网上下载了很多软件,但只能转换前五页(如WPS等),要不就是需要收费,那有没有免费的转换软件呢?

 

so,我们给各位带来了一个免费简单快速的方法,手把手教你用Python批量处理PDF格式文件,获取自己想要的内容,存为word形式。

 

在实现PDF转Word功能之前,我们需要一个python的编写和运行环境,同时安装好相关的依赖包。 对于python环境,我们推荐使用PyCharm。 

 

PDF转Word功能所需的依赖包如下:

    • PDFParser(文档分析器)

    • PDFDocument(文档对象)

    • PDFResourceManager(资源管理器)

    • PDFPageInterpreter(解释器)

    • PDFPageAggregator(聚合器)

    • LAParams(参数分析器)

步骤:

安装pdfminer3k模块

 

代码:

#!/usr/bin/env python
# Version = 3.5.2
# __auth__ = \'无名小妖\'
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(\'Django-日志配置.md.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\' \')+\'\n\')
                    document.add_paragraph(
                        content, style=\'ListBullet\'    # 添加段落,样式为unordered list类型
                    )
                document.save(\'demo1.docx\')  # 保存这个文档


if __name__ == \'__main__\':
    parse()

  

 

发表于
2018-02-23 10:08 
无名小妖 
阅读(31413
评论(4
编辑 
收藏 
举报

 

版权声明:本文为wumingxiaoyao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/wumingxiaoyao/p/8460973.html

Python代码教你批量将PDF转为Word - 无名小妖的更多相关文章

  1. 适用于macOS初学者的15个提示和技巧 – 余生不见空

    适用于macOS初学者的15个提示和技巧 当您有了第一台Mac时,就会花一些时间来适应它。您可以找出项目的位置 […]...

  2. 区块链5大巨头横向对比 – Earvin

    区块链5大巨头横向对比 联盟链是目前区块链落地实践的热点,也是大家对“杀手级应用”期望最大的区块链部署形态。联 […]...

  3. C4 模型 – 可视化架构设计

       前言   世界上最难的两件事是:   1. 把我的思想放进你的脑袋   2. 把你的钱放进我的口袋   […]...

  4. 蓝牙4.0BLE抓包(三)

    版权声明:本文为博主原创文章,转载请注明作者和出处。    作者:强光手电[艾克姆科技-无线事业部] 1. 扫 […]...

  5. < python音频库:Windows下pydub安装配置、过程出现的问题及常用API > 背景 […]...

  6. 7-23总结 Eclipse 设置 以及常用快捷键 – 小丰残月

    7-23总结 Eclipse 设置 以及常用快捷键 今天开始学习Java的高级基础. 首先就是英文版本的Ecl […]...

  7. Linux-TCP之深入浅出send和recv – John_ABC

    Linux-TCP之深入浅出send和recv 内容摘自:TCP之深入浅出send和recv、再次深入理解TC […]...

  8. 百度高级搜索语法 – 邓阮叶

    百度高级搜索语法 filetype:doc  限定搜索文件格式 site:(mi.com)  限定搜索站点 i […]...

随机推荐

  1. 关于软件开发需求分析的分享~

    一、什么是需求分析呢?   软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法, […]...

  2. IOS13系统升级带来的H5兼容性问题

    20号新推送的IOS13给很多app厂商和RD带来了便秘的感觉,目前复现的问题如下,后续还会持续更新: 1.H […]...

  3. 《重构》读书笔记

    代码的坏味道 当你感觉需要攥写注释的时候,请先尝试重构,试着让注释变得多余。 重复代码(Duplicated […]...

  4. Redis基础命令

    操作数据:redis具备五种数据类型  String  Hash  List  Set  Zset Strin […]...

  5. IOS – OpenGL ES 图像马赛克圆点 GPUImagePolkaDotFilter

    目录一.简介二.效果演示三.源码下载四.猜你喜欢零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础零基础 OpenGL (ES) 学习路线推荐 : OpenGL (E...

  6. Paramiko的SSH和SFTP使用

    目录 1. 概述 2. Paramiko的基本使用 2.1 SSHClient关键参数介绍 2.2 SSHCl […]...

  7. powerdesigner 不能自动生成注释的解决方法

    解决power designer 不能自动生成注释的解决办法只需要3步: 一、快捷键 Alt+Shift+X  […]...

  8. 一批信息查询网站汇总

    一、查企业 1、全国企业信用信息公示 http://gsxt.saic.gov.cn/ 国内企业工商注册登记信 […]...

展开目录

目录导航