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>进行事件绑定

python 复制代码
tipText.bind("<Key>",lambda event:"break")
tipText.bind("<Button-1>",lambda event:"break")

3. tkinter页面实时输出显示,并且定位到最下面

python 复制代码
#更新text组件
tipText.update() 
#实时定位到下面
tipText.see(END)

4. 打开文件夹路径

使用filedialog

python 复制代码
from tkinter import filedialog
 # 打开文件夹选择对话框
folder_path = filedialog.askdirectory()

三、完整代码

python 复制代码
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 = 0
    for file in os.listdir(file_path):
        # 获取文件后缀
        suff_name = os.path.splitext(file)[1]
        # 过滤非pdf格式文件
        if suff_name != '.pdf':
            continue
        # 获取文件名称
        i+=1
        file_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 命令,这样打开运行程序不显示终端窗口,更加友好

相关推荐
copyer_xyf4 分钟前
Agent Tool 调用
后端·python·agent
Amo Xiang11 分钟前
SpiderDemo 第5题:OB混淆实战 —— 反调试绕过与 signature 签名还原
python·js逆向·爬虫逆向·反调试·spiderdemo·ob混淆
copyer_xyf13 分钟前
Agent 结构化输出
后端·python·agent
FBI HackerHarry浩22 分钟前
Ollama如何安装到D盘
python·ai
DXM05211 小时前
第13期|遥感语义分割模型:U-Net核心原理+遥感落地优势
人工智能·python·深度学习·目标检测·随机森林·机器学习·支持向量机
码来的小朋友1 小时前
[python] 我开发了一个有20个关卡随机地图的迷宫游戏
python·游戏·pygame
夏天测1 小时前
微信小程序自动化漏洞挖掘流水线:从缓存提取到密钥验证全流程实战
python·网络安全·微信小程序·漏洞挖掘
叫我:松哥1 小时前
基于Python的共享单车租赁数据分析与预测系统,技术栈flask+boostrap+随机森林+XGBoost
人工智能·python·深度学习·算法·随机森林·数据分析·flask
Li#2 小时前
web端电商项目自动下单发货评价晒图需要用到的能力
python·自动化
雨辰AI2 小时前
从零搭建大模型本地运行环境|Python+CUDA 基础配置避坑大全
大数据·开发语言·人工智能·python·ai·ai编程·ai写作