pip install python-docx
pip install comtypes
# -*-coding:utf-8 -*-
import os
import tkinter as tk
from tkinter import filedialog
import comtypes.client
from docx import Document
def browse_folder():
folder_path = filedialog.askdirectory()
folder_path = folder_path.replace('/', '\\')
return folder_path
def browse_file():
file_path = filedialog.askopenfilenames()
return file_path
def convert_to_pdf(file_path, save_path):
# 读取Word文档
doc = Document(file_path)
# 创建一个Word应用程序对象
word = comtypes.client.CreateObject('Word.Application')
# 打开Word文档
doc_object = word.Documents.Open(file_path)
# 将文档另存为PDF
pdf_path = os.path.join(save_path, os.path.splitext(os.path.basename(file_path))[0] + '.pdf')
doc_object.SaveAs(pdf_path, FileFormat=17)
# 关闭Word文档和应用程序
doc_object.Close()
word.Quit()
print(f"Converted {file_path} to {pdf_path}")
def main():
root = tk.Tk()
root.title("批量Word转PDF")
folder_path = tk.StringVar()
file_path = tk.StringVar()
save_path = tk.StringVar()
tk.Label(root, text="Word文件夹路径:").grid(row=0, column=0)
tk.Entry(root, textvariable=folder_path).grid(row=0, column=1)
tk.Button(root, text="浏览文件夹", command=lambda: folder_path.set(browse_folder())).grid(row=0, column=2)
tk.Label(root, text="PDF保存路径:").grid(row=1, column=0)
tk.Entry(root, textvariable=save_path).grid(row=1, column=1)
tk.Button(root, text="浏览文件", command=lambda: save_path.set(browse_folder())).grid(row=1, column=2)
tk.Button(root, text="确定", command=lambda: convert_to_pdf(file_path.get(), save_path.get())).grid(row=2, column=0)
tk.Button(root, text="清空", command=lambda: (file_path.set(""), save_path.set("")).grid(row=2, column=1))
# tk.Progressbar(root, orient=tk.HORIZONTAL, length=500, mode='determinate').grid(row=3, column=0, columnspan=2)
root.mainloop()
if __name__ == "__main__":
main()
import os: 导入Python的os模块,用于处理文件和目录操作。
import tkinter as tk: 导入Python的tkinter模块,用于创建图形用户界面(GUI)。
from tkinter import filedialog: 从tkinter模块中导入filedialog类,用于实现文件和文件夹的浏览和选择功能。
import comtypes.client: 导入comtypes模块的client子模块,用于模拟COM接口调用,以实现与Microsoft Word的交互。
from docx import Document: 从docx模块中导入Document类,用于读取Word文档。
def browse_folder(**kwargs):: 定义一个名为browse_folder的函数,用于打开文件夹选择对话框,让用户选择Word文件夹路径。
def browse_file(**kwargs):: 定义一个名为browse_file的函数,用于打开文件选择对话框,让用户选择需要转换的Word文件。
def convert_to_pdf(file_path, save_path):: 定义一个名为convert_to_pdf的函数,用于将Word文件转换为PDF格式。
def main():: 定义程序的主函数,用于初始化GUI界面并处理用户交互。
root = tk.Tk(): 创建一个名为root的tkinter窗口对象,作为程序的主界面。
root.title("批量Word转PDF"): 设置root窗口的标题为“批量Word转PDF”。
folder_path = tk.StringVar(): 创建一个名为folder_path的tkinter字符串变量,用于存储用户选择的Word文件夹路径。
file_path = tk.StringVar(): 创建一个名为file_path的tkinter字符串变量,用于存储用户选择的Word文件路径。
save_path = tk.StringVar(): 创建一个名为save_path的tkinter字符串变量,用于存储用户选择的PDF保存路径。
tk.Label(root, text="Word文件夹路径:"): 在root窗口中创建一个标签,显示“Word文件夹路径:”。
tk.Entry(root, textvariable=folder_path): 在root窗口中创建一个文本框,让用户输入或选择Word文件夹路径。
tk.Button(root, text="浏览文件夹", command=lambda: folder_path.set(browse_folder())): 在root窗口中创建一个按钮,点击后打开文件夹选择对话框,让用户选择Word文件夹路径。
tk.Label(root, text="PDF保存路径:"): 在root窗口中创建一个标签,显示“PDF保存路径:”。
tk.Entry(root, textvariable=save_path): 在root窗口中创建一个文本框,让用户输入或选择PDF保存路径。
tk.Button(root, text="浏览文件", command=lambda: save_path.