当前位置: 首页 > news >正文

Python制作PDF转Word工具(Tkinter+pdf2docx)

一、效果样式

pdf转word

二、核心点

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可能会报错&#xff0c;安装完成引入from pdf2docx import Converter运行也可能报错&#xff0c;可以根据报错提示看缺少那些库&#xff0c;先卸载pip uninstall xxx,使用pip install python-docx -i htt…...

有哪些手段可以优化 CSS, 提高性能

CSS优化是Web开发中提高性能和用户体验的关键部分。下面详细解释一些CSS优化的方法&#xff0c;以提高性能&#xff1a; 合并和压缩CSS文件: 合并文件&#xff1a;将多个CSS文件合并成一个&#xff0c;以减少HTTP请求次数。这可以通过构建工具&#xff08;如Webpack&#xff09…...

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最佳实践系列 &#xff08;图文环绕方式&#xff09; 目录 应用背景操作步骤1、 打开布局选项中图文环绕方式的方法2、 图文环绕三大类型 应用背景 在Word中&#xff0c;对文字和图片进行排版时&#xff0c;采用各种不同的图片与文字组合效果能够使页面…...

Naive UI数据表格分页pageCount配置没效果

吐槽&#xff1a;因为naive-ui是基于vue3&#xff0c;所以目前的组件资料是少之又少啊&#xff0c;虽然好用&#xff0c;但感觉没有特别的普及。 背景&#xff1a;记得1年前我第一次碰到了这个问题&#xff0c;在列表里使用:pagination分页&#xff0c;怎么都不显示页码&#…...

Kibana Discover数据查询

步骤1&#xff1a;打开管理页面(Management) 步骤2&#xff1a; 因为前面的章节导入航班数据的时候&#xff0c;自动创建了一个名字叫kibana_sample_data_flights的航班数据索引&#xff0c;如果我们只想搜索kibana_sample_data_flights索引的数据&#xff0c;则不需要通配符&…...

笔记 | 编程经验谈:如何正确的使用内存

笔记 | 编程经验谈:如何正确的使用内存 首先我们要了解内存的分配方式。一般来说,内存的分配方式有三种: 1.从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 2.在栈上创建。在执行函数时,函数内…...

C语言入门-1.1 C语言概述

想要学好一门计算机编程语言&#xff0c;就和谈一个女朋友是一样的&#xff0c;需要对其深入了解。 1、计算机语言 &#xff08;1&#xff09;什么是计算机语言&#xff1f; 顾名思义&#xff0c;就是计算机之间交流的语言&#xff0c;就和人一样&#xff0c;咱们都是使用普通…...

周记之学习总结

你在人群中看到的每一个耀眼的女孩&#xff0c;都是踩着刀尖过来的。你如履平地般地舒适坦然&#xff0c;当然不配拥有任何光芒&#xff1b; 10.11-10.12 思来想去还是不舍得&#xff0c;搞了一下这个jwt&#xff0c;看了很多视频和博客&#xff0c;一直没看懂&#xff0c;两…...

程序设计:C++ 一个可以放入共享内存的string模板

共享内存由于是多进程共享的&#xff0c;里面的数据不适合包含指针&#xff0c;因为共享内存在不同进程里的地址并不相同。尽管可以在连接共享内存时指定连接地址&#xff0c;但是&#xff0c;这样做限制太多&#xff1a; 不同硬件、系统这个地址可能不一样&#xff0c;没有通…...

【EI会议征稿】第三届应用力学与先进材料国际学术会议(ICAMAM 2024)

第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09; 2024 3rd International Conference on Applied Mechanics and Advanced Materials&#xff08;ICAMAM 2024&#xff09; 第三届应用力学与先进材料国际学术会议&#xff08;ICAMAM 2024&#xff09…...

Python -- I/O编程

文章目录 一、文件读写1. 读文件2. 二进制文件3. 字符编码4. 写文件 二、StringIO和BytesIO三、操作文件和目录1. 操作系统命令2. 操作文件 四、序列化五、 JSON六、异步IO1. 协程2. asyncioasync/awaitaiohttp 一、文件读写 Python内置了读写文件的函数&#xff0c;用法和C是…...

langchain入门指南和实战

简单介绍 LangChain 是一个开源的语言模型集成框架&#xff0c;旨在简化使用大型语言模型&#xff08;LLM&#xff09;创建应用程序的过程。 利用它可以让开发者使用语言模型来实现各种复杂的任务&#xff0c;例如文本到图像的生成、文档问答、聊天机器人、 调用特定的SaaS服务…...

群晖synology DSM 7.2设置钉钉Webhooks通知

现在越来越多的小伙伴都有了自己的Nas系统&#xff0c;为了更加方便的接收Nas的消息&#xff0c;这篇文章带着大家一起配置一个钉钉&#xff08;机器人&#xff09;即时消息通知 首先登录钉钉的开放平台&#xff1a;开发者后台统一登录 - 钉钉统一身份认证 1.创建一个机器人&…...

STP生成树协议详解

一、STP作用 如果链路断开或节点故障&#xff0c;那么互联的设备就无法正常通信了&#xff0c;这类网络问题叫做单点故障。没有备份的链路或节点&#xff0c;出现故障会直接断网。如果要提供 724 小时不间断的服务&#xff0c;那就需要在网络中提前部署冗余。避免出现单点故障…...

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…...

中国社科院与美国杜兰大学金融管理硕士---不将就的人生

“万般皆下品&#xff0c;惟有读书高”、“书中自有颜如玉&#xff0c;书中自有黄金屋”&#xff0c;古往今来&#xff0c;读书的好处为人们所重视。从而想拿到学历没有知识的沉淀&#xff0c;没有一定的学识水平&#xff0c;又怎么能拿到含金量颇高的学历呢&#xff1f;退一步…...

教程更新 | 持续开源 RK3568驱动指南-驱动基础进阶篇

《iTOP-RK3568开发板驱动开发指南》手册文档更新&#xff0c;手册内容对应视频教程&#xff0c;后续资料会不断更新&#xff0c;不断完善&#xff0c;帮助用户快速入门&#xff0c;大大提升研发速度。 ✦ 第一篇 驱动基础 第1章 前言 第2章 你好&#xff01;内核源码 第3章 …...

Jmeter测试关联接口

Jmeter用于接口测试时&#xff0c;后一个接口经常需要用到前一次接口返回的结果&#xff0c;本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式&#xff0c;可供参考。 一、实例场景&#xff1a; 有如下两个接口&#xff0c;通过正则表达式提取器&#xff0c;将第一…...

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…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...