前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >惊呆同事的自动化小工具来了!Python 批量将 PDF 转 Word

惊呆同事的自动化小工具来了!Python 批量将 PDF 转 Word

作者头像
杰哥的IT之旅
发布2022-12-06 09:52:32
1.2K0
发布2022-12-06 09:52:32
举报
文章被收录于专栏:GitHub专栏GitHub专栏

作者:Cherish 来源:https://www.jianshu.com/p/4837343451fe 本文为读者投稿

本期视频内容:惊呆同事的自动化小工具来了!Python 批量将 PDF 转 Word

无论在工作还是学习中,大家都会遇到一个问题 "将 PDF 中的内容(文本和图片)转换为 Word 的格式" ,也可以说从只读转换成可编辑的格式。当然网上有很多工具可以实现,但大多数都是收费的。

那今天的分享就是通过利用 Python 实现批量将 PDF 转换成 Word 并做成一个桌面小工具。

好处一方面是 Python 有免费的开源库可供我们使用;另一方面可以根据我们需求灵活定制功能,最后工具可以重复使用,即使你的同事电脑没有 Python 开发环境,也可以轻松使用。

一、实现效果

二、环境准备

2.1 pdf 转 word

实现这个功能,主要使用的是 pdf2docx 这个库,也是最推荐的。

只要是标准 PDF 文档,里面的图片和表格都可以保留格式,要注意的是 Python 版本必须是 3.6 或以上,本文使用的是 Python 3.8。安装命令如下:

代码语言:javascript
复制
pip install pdf2docx
2.2 绘制图形用户界面

Python 有许多 GUI 工具包可供选择,本文使用 PySimpleGUI,使用起来比较简单,对于我们这个需求足够用。更多可参考:PySimpleGUI 文档[1],有非常多的示例,本文不做过多拓展。使用之前也需要安装一下,注意大小写。

代码语言:javascript
复制
pip install PySimpleGUI 
2.3 py 程序打包 exe

pyinstaller 是一个非常简单的打包 Python 的 py 文件的库,一条命令即可实现打包。更多可参考官方文档:pyinstaller[2]

代码语言:javascript
复制
pip install pyinstaller

三、代码实现

3.1 PDF 转 Word 函数
代码语言:javascript
复制
from pdf2docx import Converter
import PySimpleGUI as sg


def pdf2word(file_path):
    file_name = file_path.split('.')[]
    doc_file = f'{file_name}.docx'
    p2w = Converter(file_path)
    p2w.convert(doc_file, start=, end=None)
    p2w.close()
    return doc_file
3.2 设计图形用户界面
代码语言:javascript
复制
def main():
    # 选择主题
    sg.theme('LightBlue5')
    # 设置窗口
    layout = [
        [sg.Text('pdfToword', font=('微软雅黑', )),
         sg.Text('', key='filename', size=(, ), font=('微软雅黑', ), text_color='blue')],
        [sg.Output(size=(, ), font=('微软雅黑', ))],
        [sg.FilesBrowse('选择文件', key='file', target='filename'), sg.Button('开始转换'), sg.Button('退出')]]
    # 创建窗口
    window = sg.Window("Python与数据分析_青青", layout, font=("微软雅黑", ), default_element_size=(, ))
3.3 实现单个文件和批量文件操作
代码语言:javascript
复制
 # 事件循环
    while True:
        # 窗口的读取,有两个返回值(1.事件;2.值)
        event, values = window.read()
        print(event, values)

        if event == "开始转换":
            # 单个文件
            if values['file'] and values['file'].split('.')[] == 'pdf':
                filename = pdf2word(values['file'])
                print('文件个数 :1')
                print('\n' + '转换成功!' + '\n')
                print('文件保存位置:', filename)
            # 多个文件
            elif values['file'] and values['file'].split(';')[].split('.')[] == 'pdf':
                print('文件个数 :{}'.format(len(values['file'].split(';'))))
                for f in values['file'].split(';'):
                    filename = pdf2word(f)
                    print('\n' + '转换成功!' + '\n')
                    print('文件保存位置:', filename)
            else:
                print('请选择pdf格式的文件哦!')
        if event in (None, '退出'):
            break

    window.close()
3.4 调用主要功能函数
代码语言:javascript
复制
main()

四、打包代码

打开 DOS 窗口并切换到 demo.py(这里我新建了文件夹,放到了D盘)文件所在的目录,注意路径中不要有中文:

pyinstaller 指令的常见可选参数:

  • -i 给应用程序添加图标
  • -F 指定打包后只生成一个exe格式的文件
  • -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
  • -c –console, –nowindowed 使用控制台,无界面(默认)
  • -w –windowed, –noconsole 使用窗口,无控制台
  • -p 添加搜索路径

在当前的目录下,将会生成两个文件夹:build 和 dist。

dist 文件夹里就是所有可执行的 exe 文件,发送快捷方式到桌面,点击 exe 即可运行。

五、解决 exe 文件过大问题【可略】

如果生成 exe 之后,若发现程序异常的慢,可检查导包代码,尽量不要出现以下写法,否则每次启动程序,都会导入大量函数占用大量时间。

代码语言:javascript
复制
from ··· import * 
改成 import 包名 

搭建干净的 Python 虚拟环境可参考:太强了!Python 开发桌面小工具,让代码替我们干重复的工作!里面介绍了什么是虚拟环境,以及如何搭建。

好了,到这里本期分享的内容就结束了,其主要目的是为大家提高工作效率,为办公自动化提供一种思路。欢迎大家在评论区与我们一起交流讨论。

扩展链接

[1] PySimpleGUI 文档 https://github.com/PySimpleGUI/PySimpleGUI [2] pyinstaller https://pyinstaller.readthedocs.io/en/latest/usage.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杰哥的IT之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、实现效果
  • 二、环境准备
    • 2.1 pdf 转 word
      • 2.2 绘制图形用户界面
        • 2.3 py 程序打包 exe
        • 三、代码实现
          • 3.1 PDF 转 Word 函数
            • 3.2 设计图形用户界面
              • 3.3 实现单个文件和批量文件操作
                • 3.4 调用主要功能函数
                • 四、打包代码
                • 五、解决 exe 文件过大问题【可略】
                • 扩展链接
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档