tkinter封装PDF转Word2.0源码

import tkinter
import time
from tkinter import ttk
from tkinter import messagebox
from tkinter import filedialog
from pdf2docx import Converter
import windnd


win = tkinter.Tk()
win.geometry("700x500")
var_sed = tkinter.StringVar()
var_ped = tkinter.StringVar()
filename = ''

#获取当前文件总页码
def get_pages():
    var_ped.set("")
    pdf_file = filename
    doc_file = pdf_file.split('.pdf')[0] + '.docx'
    cv = Converter(pdf_file)
    cv.convert(doc_file, start=0, end=1)
    page_num = 0
    for i in cv._pages:
        page_num = page_num + 1
    page_end.insert(index=0, string=str(page_num))

#拖拽文件传路径
def dragged_files(files):
    global filename
    filename = '\n'.join((item.decode('gbk') for item in files))
    lab['text'] = filename
    get_pages()


#上传文件路径功能
def upload():
    global filename
    filename = filedialog.askopenfilename()
    lab['text'] = filename
    get_pages()


#转换成Word
def cnvt(filename):
    pdf_file = filename
    doc_file = pdf_file.split('.pdf')[0] + '.docx'
    cv = Converter(pdf_file)
    s = int(page_start.get())
    e = int(page_end.get())
    cv.convert(doc_file, start=s-1, end=e)
    messagebox.showinfo(title='提示',message="文件转换成功!")
    var_ped.set("")
    var_sed.set("1")
    cv.close()


lab = tkinter.Label(win)
lab_page = tkinter.Label(win,text="页码输入:")
lab_txt = tkinter.Label(win,text = "至")
progress_bar = ttk.Progressbar(win)
btn_upload = tkinter.Button(win, text='上传PDF文件', font=("楷体", 18), command=upload)
btn_convert = tkinter.Button(win, text='开始转换', font=("楷体", 18), command=lambda:cnvt(filename))
page_start = tkinter.Entry(win,width=10,textvariable=var_sed)
page_end = tkinter.Entry(win,width=10,textvariable=var_ped)
page_start.insert(index=0,string="1")


btn_upload.place(x=270, y=100)
lab.place(x=50, y=200)
lab_page.place(x=180, y=230)
page_start.place(x=250, y=230)
lab_txt.place(x=335, y=230)
page_end.place(x=370, y=230)
'''progress_bar.place(x=250,y=220)
progress_bar['maximum'] = 100
progress_bar['length'] = 200'''
btn_convert.place(x=285, y=300)
windnd.hook_dropfiles(win,func=dragged_files)  #新加上的拖拽文件功能
win.mainloop()


posted @ 2022-05-27 10:42  rsxabm  阅读(150)  评论(1)    收藏  举报