Python制作PDF转Word工具(Tkinter+pdf2docx)
一、效果样式

二、核心点
1. 使用pdf2docx完成PDF转换Word
安装pdf2docx可能会报错,安装完成引入from pdf2docx import Converter运行也可能报错,可以根据报错提示看缺少那些库,先卸载pip uninstall xxx,使用pip install python-docx -i https://pypi.douban.com/simple/进行指定下载路径安装。
2. text组件禁止键盘鼠标点击编辑
使用bind对<Key><Button-1>进行事件绑定
tipText.bind("<Key>",lambda event:"break")
tipText.bind("<Button-1>",lambda event:"break")
3. tkinter页面实时输出显示,并且定位到最下面
#更新text组件
tipText.update()
#实时定位到下面
tipText.see(END)
4. 打开文件夹路径
使用filedialog
from tkinter import filedialog# 打开文件夹选择对话框
folder_path = filedialog.askdirectory()
三、完整代码
import os
from pdf2docx import Converter
from tkinter import *
import time
from tkinter import filedialog# 批量转换word
def pdf_docx():# 遍历所有文件file_path = folderInput.get("1.0", "end-1c")i = 0for file in os.listdir(file_path):# 获取文件后缀suff_name = os.path.splitext(file)[1]# 过滤非pdf格式文件if suff_name != '.pdf':continue# 获取文件名称i+=1file_name = os.path.splitext(file)[0]# pdf文件名称pdf_name = file_path + '\\' + file# 要转换的docx文件名称docx_name = file_path + '\\' + file_name + '.docx'# 加载pdf文档tipText.insert(INSERT,"正在转换文件:\n")tipText.insert(INSERT,f"{file_name}.pdf\n")time.sleep(0.1)tipText.insert(END,"正在转换,请稍等... \n")tipText.see(END)folderInput.update()cv = Converter(pdf_name)cv.convert(docx_name)cv.close()tipText.insert(END,"转换完成! \n \n")tipText.see(END)tipText.insert(END,f"一共转换了{i}个PDF文件,请返回文件夹目录进行查看转换的Word文件!")
# 选择文件夹的逻辑
def choose_folder():# 打开文件夹选择对话框folder_path = filedialog.askdirectory()# 更新标签文本# print(folder_path)folderInput.insert(END,folder_path)# GUI页面
root = Tk()
root.title("PDF转Word工具")
root.geometry("600x400")
root.resizable(False, False)# 布局框架
fr = Frame(root).pack(anchor = 'nw')
folderInput = Text(fr,width=30,height=1, font=('Arial', 14))
folderInput.place(x=40,y=20)
folderInput.bind("<Key>",lambda event:"break")
folderInput.bind("<Button-1>",lambda event:"break")
folder = Button(fr,text='选择文件夹', command=choose_folder).place(x=400,y=18)
conver = Button(fr,text='批量转换', command=pdf_docx).place(x=500,y=18)
tipText = Text(fr,width=74,height=22,padx=2, pady=2)
tipText.place(x=40,y=80)
tipText.bind("<Key>",lambda event:"break")
tipText.bind("<Button-1>",lambda event:"break")
tipText.insert(INSERT,'欢迎使用PDF转换Word工具! \n\n')mainloop()
**使用pyinstaller打包时建议使用 pyinstaller -w .\pdftoword.py 命令,这样打开运行程序不显示终端窗口,更加友好
相关文章:
Python制作PDF转Word工具(Tkinter+pdf2docx)
一、效果样式 二、核心点 1. 使用pdf2docx完成PDF转换Word 安装pdf2docx可能会报错,安装完成引入from pdf2docx import Converter运行也可能报错,可以根据报错提示看缺少那些库,先卸载pip uninstall xxx,使用pip install python-docx -i htt…...
有哪些手段可以优化 CSS, 提高性能
CSS优化是Web开发中提高性能和用户体验的关键部分。下面详细解释一些CSS优化的方法,以提高性能: 合并和压缩CSS文件: 合并文件:将多个CSS文件合并成一个,以减少HTTP请求次数。这可以通过构建工具(如Webpack)…...
ARM可用的可信固件项目简介
安全之安全(security)博客目录导读 目录 一、TrustedFirmware-A (TF-A) 二、MCUboot 三、TrustedFirmware-M (TF-M) 四、TF-RMM 五、OP-TEE 六、Mbed TLS 七、Hafnium 八、Trusted Services 九、Open CI 可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现…...
信创办公–基于WPS的Word最佳实践系列 (图文环绕方式)
信创办公–基于WPS的Word最佳实践系列 (图文环绕方式) 目录 应用背景操作步骤1、 打开布局选项中图文环绕方式的方法2、 图文环绕三大类型 应用背景 在Word中,对文字和图片进行排版时,采用各种不同的图片与文字组合效果能够使页面…...
Naive UI数据表格分页pageCount配置没效果
吐槽:因为naive-ui是基于vue3,所以目前的组件资料是少之又少啊,虽然好用,但感觉没有特别的普及。 背景:记得1年前我第一次碰到了这个问题,在列表里使用:pagination分页,怎么都不显示页码&#…...
Kibana Discover数据查询
步骤1:打开管理页面(Management) 步骤2: 因为前面的章节导入航班数据的时候,自动创建了一个名字叫kibana_sample_data_flights的航班数据索引,如果我们只想搜索kibana_sample_data_flights索引的数据,则不需要通配符&…...
笔记 | 编程经验谈:如何正确的使用内存
笔记 | 编程经验谈:如何正确的使用内存 首先我们要了解内存的分配方式。一般来说,内存的分配方式有三种: 1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 2.在栈上创建。在执行函数时,函数内…...
C语言入门-1.1 C语言概述
想要学好一门计算机编程语言,就和谈一个女朋友是一样的,需要对其深入了解。 1、计算机语言 (1)什么是计算机语言? 顾名思义,就是计算机之间交流的语言,就和人一样,咱们都是使用普通…...
周记之学习总结
你在人群中看到的每一个耀眼的女孩,都是踩着刀尖过来的。你如履平地般地舒适坦然,当然不配拥有任何光芒; 10.11-10.12 思来想去还是不舍得,搞了一下这个jwt,看了很多视频和博客,一直没看懂,两…...
程序设计:C++ 一个可以放入共享内存的string模板
共享内存由于是多进程共享的,里面的数据不适合包含指针,因为共享内存在不同进程里的地址并不相同。尽管可以在连接共享内存时指定连接地址,但是,这样做限制太多: 不同硬件、系统这个地址可能不一样,没有通…...
【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)
第三届应用力学与先进材料国际学术会议(ICAMAM 2024) 2024 3rd International Conference on Applied Mechanics and Advanced Materials(ICAMAM 2024) 第三届应用力学与先进材料国际学术会议(ICAMAM 2024)…...
Python -- I/O编程
文章目录 一、文件读写1. 读文件2. 二进制文件3. 字符编码4. 写文件 二、StringIO和BytesIO三、操作文件和目录1. 操作系统命令2. 操作文件 四、序列化五、 JSON六、异步IO1. 协程2. asyncioasync/awaitaiohttp 一、文件读写 Python内置了读写文件的函数,用法和C是…...
langchain入门指南和实战
简单介绍 LangChain 是一个开源的语言模型集成框架,旨在简化使用大型语言模型(LLM)创建应用程序的过程。 利用它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人、 调用特定的SaaS服务…...
群晖synology DSM 7.2设置钉钉Webhooks通知
现在越来越多的小伙伴都有了自己的Nas系统,为了更加方便的接收Nas的消息,这篇文章带着大家一起配置一个钉钉(机器人)即时消息通知 首先登录钉钉的开放平台:开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…...
STP生成树协议详解
一、STP作用 如果链路断开或节点故障,那么互联的设备就无法正常通信了,这类网络问题叫做单点故障。没有备份的链路或节点,出现故障会直接断网。如果要提供 724 小时不间断的服务,那就需要在网络中提前部署冗余。避免出现单点故障…...
CentOS 6/7/8 操作系统镜像下载
CentOS Mirrors List 编辑 DownloadAbout About CentOS Frequently Asked Questions (FAQs) Special Interest Groups (SIGs) CentOS Variants Governance Community Contribute Forums Mailing Lists IRC Calendar & IRC Meeting List Planet Submit a Bug Stories Doc…...
中国社科院与美国杜兰大学金融管理硕士---不将就的人生
“万般皆下品,惟有读书高”、“书中自有颜如玉,书中自有黄金屋”,古往今来,读书的好处为人们所重视。从而想拿到学历没有知识的沉淀,没有一定的学识水平,又怎么能拿到含金量颇高的学历呢?退一步…...
教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇
《iTOP-RK3568开发板驱动开发指南》手册文档更新,手册内容对应视频教程,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 ✦ 第一篇 驱动基础 第1章 前言 第2章 你好!内核源码 第3章 …...
Jmeter测试关联接口
Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式,可供参考。 一、实例场景: 有如下两个接口,通过正则表达式提取器,将第一…...
C++之基于Winsock2封装UDPServer与UDPClient
文章目录 Socket过程UDPServer.hUDPServer.cppUDPClient.hUDPClient.cppmain.cppCMakeLists.txt测试截图 Socket过程 UDPServer UDPClient UDPServer.h #ifndef UDPSERVER_H_INCLUDED #define UDPSERVER_H_INCLUDED#include <iostream> #include <string> #inclu…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...
