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

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

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

一、实现效果

二、环境准备

2.1 pdf 转 word

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

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

pip install pdf2docx

2.2 绘制图形用户界面

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

pip install PySimpleGUI

2.3 py 程序打包 exe

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

pip install pyinstaller

三、代码实现

3.1 PDF 转 Word 函数

from pdf2docx import Converter
import PySimpleGUI as sgdef 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

3.2 设计图形用户界面

def main():# 选择主题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 实现单个文件和批量文件操作

 # 事件循环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, '退出'):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相关推荐

  1. 实用小工具-----python3 pdf2docx轻松搞定pdf转word

    轻松搞定简单版本非图片pdf转doc 轻松搞定简单版本非图片pdf转doc 在我们工作学习中,遇到很多pdf文件,无法编辑,针对这个问题我,我们用python 的pdf2doc就能很好的解决这个问题, ...

  2. 自动化小工具---秒级倒计时

    自动化小工具-----秒级倒计时器 主要运用了for循环语句和sleep命令来实现. #!/bin/bash #实现一个的秒级倒时器 read -p "Please enter minute ...

  3. Python——pyqt-auto-tool自动化小工具(源码)

    目录 一.演示视频 二.代码包 三.使用步骤 四.总结 一.演示视频 pyqt-auto-tool自己乱改的自动化小工具_哔哩哔哩_bilibili今天教资考试完,花半天自己乱改的自动化小工具pyqt ...

  4. python怎么读取pdf为文本_轻松用Python批量提取PDF文本内容,这个小技巧告诉你!...

    轻松用Python批量提取PDF文本内容,这个小技巧告诉你!-1.jpg (22.73 KB, 下载次数: 0) 2018-9-7 08:33 上传 本文为你展示,如何用Python把许多PDF文件的 ...

  5. 用Python制作一个PDF转Word工具

    用Python制作一个PDF转Word工具 工具:Python3.9.13,VSCode1.73.1,pdf2docx0.5.6,tkinter,Win10Home PDF文件不易编辑,想要编辑需要转 ...

  6. c++查询当前文件夹下文件数目_python3自动化小工具--删除某个文件夹xx后缀文件...

    源码 DelSomeFile.py """ 此代码用于删除文件夹下面以txt结尾的文件 (同理将.txt-->.py可以删除py文件) 借用pyqt5调用文件选择对 ...

  7. 如何用python写小工具_用python写一个录音小工具

    Python的paramiko,wxPython库的应用 Sound eXchange 命令行 需求 最近在给一个做语音识别的项目做QA工作.众所周知,此类人工智能方面的项目都需要一些数据收集的工作. ...

  8. python制作小工具_利用Python制作翻译小工具

    话不多说,直接上代码. Component文件: # coding:utf-8 from tkinter import * from tkinter import ttk from tkinter i ...

  9. python 处理数据小工具_用Python这个小工具,一次性把论文作图与数据处理全部搞定!...

    原标题:用Python这个小工具,一次性把论文作图与数据处理全部搞定! 一入科研深似海-- 随着大学纷纷开学,"防脱发用生姜还是黑芝麻?", 研究僧们又开始为自己所剩无几的头发发愁 ...

最新文章

  1. Java培训分享:零基础怎么学习Java?
  2. 2019年9月中国编程语言排行榜,C#排第三
  3. input标签的值只能两位小数_Day51 HTML表格表单标签、flask框架
  4. vim: vimrc
  5. 封装(构造方法,构造器)
  6. Linux 设置环境变量导致bash:command not found
  7. php 递归函数中静态变量,php递归,静态变量,匿名函数使用
  8. (C/C++学习)15.C语言字符串和字符数组
  9. Python实现批量网站URL存活检测
  10. Java setlocale方法_Java MessageFormat setLocale()用法及代码示例
  11. 面向资源受限安全芯片的开放式运行环境设计
  12. android 输入法,里面还集成语音输入
  13. Conda太慢 试试这个加速工具
  14. 安卓系统怎么模拟java_电脑上安装安卓系统模拟器的方法(直接用JAVA虚拟成手机)...
  15. 时下火热的 NFT 究竟有什么用?
  16. Privacy Protection in Distributed Fingerprint-based Authentication
  17. 发布包到maven公共仓库图文教程(1) --- 注册账号和提交申请
  18. 杨辉三角(C语言实现)
  19. windows,ubuntu,代码三种方式制作Android开机动画 bootanimation.zip
  20. Barsetto百胜图BAV02自助咖啡机,创造便捷生活的无限可能

热门文章

  1. 开放共生,HERE构建统一平台赋能全球自动驾驶产业发展
  2. 做个小游戏来检验自己的Java学习吧-----(行走的人)
  3. 字节跳动笔试题之01数组联通域个数
  4. 好书推荐--大数据日知录(深入理解大数据的必备书籍)附电子版下载
  5. idea 离线安装 Lombok插件
  6. 芯片设计中的LEF文件浅析
  7. “嫦娥四号”首拍月球背面照 香港理大助研发相机系统
  8. 为什么现在会有那么多孩子存在感统失调?
  9. 视觉图神经网络:Vision GNN
  10. Java初学者作业——编写JAVA程序,根据用户输入课程名称,输出对应课程的简介,各门课程的简介见表