一、实验目标
通过利用python中的pyinstaller库和PySimpleGUI库,实现将pdf转为word的实际功能。
二、实验准备
安装pdf2docx库
pip install pdf2docx
安装PySimpleGUI库
pip install PySimpleGUI
三、实验代码
from pdf2docx import Converterimport PySimpleGUI as sgdef pdf2word(file_path): file_name = file_path.split('.')[0] doc_file = f'{file_name}.docx' p2w = Converter(file_path) p2w.convert(doc_file, start=0, end=None) p2w.close() return doc_filedef main(): # 选择主题 sg.theme('DarkAmber') layout = [ [sg.Text('pdfToword', font=('微软雅黑', 12)), sg.Text('', key='filename', size=(50, 1), font=('微软雅黑', 10))], [sg.Output(size=(80, 10), font=('微软雅黑', 10))], [sg.FilesBrowse('选择文件', key='file', target='filename'), sg.Button('开始转换'), sg.Button('退出')]] # 创建窗口 window = sg.Window("张卧虎", layout, font=("微软雅黑", 15), default_element_size=(50, 1)) # 事件循环 while True: # 窗口的读取,有两个返回值(1.事件;2.值) event, values = window.read() print(event, values) if event == "开始转换": if values['file'] and values['file'].split('.')[1] == 'pdf': filename = pdf2word(values['file']) print('文件个数 :1') print('\n' + '转换成功!' + '\n') print('文件保存位置:', filename) elif values['file'] and values['file'].split(';')[0].split('.')[1] == 'pdf': print('文件个数 :{}'.format(len(values['file'].split(';')))) for f in values['file'].split(';'): filename = pdf2word(f) print('\n' + '转换成功!' + '\n') print('文件保存位置:', filename) else: print('请选择pdf格式的文件哦!') if event in (None, '退出'): break window.close()main()
四、部分代码解析
pdf转word代码主体部分
def pdf2word(file_path): file_name = file_path.split('.')[0] doc_file = f'{file_name}.docx' p2w = Converter(file_path) p2w.convert(doc_file, start=0, end=None) p2w.close() return doc_file
convert(doc_file,start,end)函数中
doc_file:转化完成后文件名
start:转化开始页面
end:转化结束页面
注意点:
①若不给start,end参数则默认转化全篇
②对于不连续的页面,也可写作convert(doc_file , pages = [2,4,6])
图形化界面部分
sg.theme('default1')layout = [[sg.Text('pdfToword', font=('微软雅黑', 12)), sg.Text('', key='filename', size=(50, 1), font=('微软雅黑', 10))], [sg.Output(size=(80, 10), font=('微软雅黑', 10))], [sg.FilesBrowse('选择文件', key='file', target='filename'), sg.Button('开始转换'),sg.Button('退出')]]window = sg.Window("id", layout, font=("微软雅黑", 15), default_element_size=(50, 1))
theme表示主题,即图形化界面的主题颜色(sg.theme_list()可以查看所有可用主题)
实现多个文件转化
if event == "开始转换": if values['file'] and values['file'].split('.')[1] == 'pdf': filename = pdf2word(values['file']) print('文件个数 :1') print('\n' + '转换成功!' + '\n') print('文件保存位置:', filename) elif values['file'] and values['file'].split(';')[0].split('.')[1] == 'pdf': print('文件个数 :{}'.format(len(values['file'].split(';')))) for f in values['file'].split(';'): filename = pdf2word(f) print('\n' + '转换成功!' + '\n') print('文件保存位置:', filename) else: print('请选择pdf格式的文件')
①第一个if处,通过“.”进行划分,判断是否为单个且pdf格式文件
②else if处,通过“;”划分,将所有文件的存储路径储存在一个数组中,利用循环来遍历数组,从而达到依次转化的目的
③else处,若传入非pdf文件则输出提示文字
五、结果
完结撒花!
来源地址:https://blog.csdn.net/Josepyth/article/details/126603643