您的位置:首页 >聚焦 >

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

2022-08-26 15:26:30    来源:程序员客栈

作者:Cherish来源:https://www.jianshu.com/p/4837343451fe公众号后台回复:「Python批量将pdf转word」,即可获取本文完整数据。本文为读者投稿

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

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


(资料图片)

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

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

一、实现效果 二、环境准备 2.1 pdf 转 word

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

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

pipinstallpdf2docx

2.2 绘制图形用户界面

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

pipinstallPySimpleGUI

2.3 py 程序打包 exe

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

pipinstallpyinstaller

三、代码实现 3.1 PDF 转 Word 函数

frompdf2docximportConverterimportPySimpleGUIassgdefpdf2word(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()returndoc_file

3.2 设计图形用户界面

defmain():#选择主题sg.theme("LightBlue5")#设置窗口layout=[[sg.Text("pdfToword",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与数据分析_青青",layout,font=("微软雅黑",15),default_element_size=(50,1))

3.3 实现单个文件和批量文件操作

#事件循环whileTrue:#窗口的读取,有两个返回值(1.事件;2.值)event,values=window.read()print(event,values)ifevent=="开始转换":#单个文件ifvalues["file"]andvalues["file"].split(".")[1]=="pdf":filename=pdf2word(values["file"])print("文件个数:1")print("\n"+"转换成功!"+"\n")print("文件保存位置:",filename)#多个文件elifvalues["file"]andvalues["file"].split(";")[0].split(".")[1]=="pdf":print("文件个数:{}".format(len(values["file"].split(";"))))forfinvalues["file"].split(";"):filename=pdf2word(f)print("\n"+"转换成功!"+"\n")print("文件保存位置:",filename)else:print("请选择pdf格式的文件哦!")ifeventin(None,"退出"):breakwindow.close()

3.4 调用主要功能函数

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 之后,若发现程序异常的慢,可检查导包代码,尽量不要出现以下写法,否则每次启动程序,都会导入大量函数占用大量时间。

from···import*改成import包名

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

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

扩展链接

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

公众号后台回复:「Python批量将pdf转word」,即可获取本文完整数据。

推荐阅读

建议收藏!Python 读取千万级数据自动写入 MySQL 数据库

用 Python 批量提取 PDF 的图片,并存储到指定文件夹

用 Python 批量提取 PDF 的表格数据,保存为 Excel

太强了!Python 开发桌面小工具,让代码替我们干重复的工作!

太酷了!手把手教你用 Python 绘制桑基图!| 用户行为路径分析

MySQL 高级 | 用存储过程、定时器、触发器来解决数据分析问题

关键词: 使用的是 图形用户界面 虚拟环境

相关阅读