您当前的位置: 首页 >  学无止境 >  文章详情

Python 实现批量将 PDF 转换成 Word 并做成一个桌面小工具

时间: 2023-05-15 【学无止境】 阅读量:共772人围观

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

1.环境准备

实现这个功能,主要使用的是 pdf2docx 这个库,也是最推荐的。
只要是标准 PDF 文档,里面的图片和表格都可以保留格式,要注意的是 Python 版本必须是 3.6 或以上,本文使用的是 Python 3.8。安装命令如下:

pip install pdf2docx

2.绘制图形用户界面

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

pip install PySimpleGUI

3.py 程序打包 exe

pyinstaller 是一个非常简单的打包 Python 的 py 文件的库,一条命令即可实现打包。

pip install pyinstaller

4.代码实现

// PDF 转 Word 函数 from pdf2docx import Converter import PySimpleGUI as sg def pdf2word(file_path): file_name = file_path.split('.')[0] doc_file = f'{file_name}.docx' p2w = Converter(file_path) p2w.convert(doc_file, start=0, end=None) p2w.close() return doc_file // 设计图形用户界面 def main(): # 选择主题 sg.theme('LightBlue5') # 设置窗口 layout = [ [sg.Text('PDF转Word', font=('微软雅黑', 12)), sg.Text('', key='filename', size=(50, 1), font=('微软雅黑', 10), text_color='blue')], [sg.Output(size=(80, 10), font=('微软雅黑', 10))], [sg.FilesBrowse('选择文件', key='file', target='filename'), sg.Button('开始转换'), sg.Button('退出')]] # 创建窗口 window = sg.Window("Python与PDF转Word", layout, font=("微软雅黑", 15), default_element_size=(50, 1)) // 实现单个文件和批量文件操作 # 事件循环 while True: # 窗口的读取,有两个返回值(1.事件;2.值) event, values = window.read() print(event, values) if event == "开始转换": # 单个文件 if values['file'] and values['file'].split('.')[1] == 'pdf': filename = pdf2word(values['file']) print('文件个数 :1') print('\n' + '转换成功!' + '\n') print('文件保存位置:', filename) # 多个文件 elif values['file'] and values['file'].split(';')[0].split('.')[1] == '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() // 调用主要功能函数 main()
文章评论
总共 0 条评论
这篇文章还没有收到评论,赶紧来抢沙发吧~
Copyright (C) 2023- 小祥驿站 保留所有权利 蜀ICP备 17034318号-2  公安备案号 50010302004554