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

    tipText.bind("",lambda event:"break")
    tipText.bind("",lambda event:"break")
    
    • 1
    • 2

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

    #更新text组件
    tipText.update() 
    #实时定位到下面
    tipText.see(END)
    
    • 1
    • 2
    • 3
    • 4

    4. 打开文件夹路径
    使用filedialog

    from tkinter import filedialog
     # 打开文件夹选择对话框
    folder_path = filedialog.askdirectory()
    
    • 1
    • 2
    • 3

    三、完整代码

    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("",lambda event:"break")
    folderInput.bind("",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("",lambda event:"break")
    tipText.bind("",lambda event:"break")
    tipText.insert(INSERT,'欢迎使用PDF转换Word工具! \n\n')
     
    mainloop()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66

    **使用pyinstaller打包时建议使用 pyinstaller -w .\pdftoword.py 命令,这样打开运行程序不显示终端窗口,更加友好

  • 相关阅读:
    Linux[高级管理]——使用源码包编译安装Apache网站
    关于#c++#的问题,请各位专家解答!
    C++基类与派生类构造和析构顺序以及虚函数的调用
    Python 内置logging 使用详细讲
    windows提权
    洛谷P8815:逻辑表达式 ← CSP-J 2022 复赛第3题
    SpringBoot使用分布式锁
    Flink热门商品统计
    Zookeeper实战、选举原理、分布式锁原理
    图片上传流程&前端上传文件&后端保存文件&并返回图片地址
  • 原文地址:https://blog.csdn.net/weixin_43205774/article/details/133854735