tkinter批量word转pdf

简介: tkinter批量word转pdf

image.png

 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.

目录
相关文章
|
1月前
|
Java Apache Maven
将word文档转换成pdf文件方法
在Java中,将Word文档转换为PDF文件可采用多种方法:1) 使用Apache POI和iText库,适合处理基本转换需求;2) Aspose.Words for Java,提供更高级的功能和性能;3) 利用LibreOffice命令行工具,适用于需要开源解决方案的场景。每种方法都有其适用范围,可根据具体需求选择。
|
1月前
|
Java Apache Maven
Java将word文档转换成pdf文件的方法?
【10月更文挑战第13天】Java将word文档转换成pdf文件的方法?
220 1
|
3月前
|
Linux Python Windows
Python PDF文件转Word格式,只需要3秒(附打包)
Python PDF文件转Word格式,只需要3秒(附打包)
90 3
Python PDF文件转Word格式,只需要3秒(附打包)
|
3月前
|
Python
Python——将PPT和Word转为PDF文件
Python——将PPT和Word转为PDF文件
73 1
|
3月前
|
Python
还不会免费将PDF转为Word?你可以试试这3种工具!
还不会免费将PDF转为Word?你可以试试这3种工具!
|
4月前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
295 6
|
5月前
使用LabVIEW打开默认应用程序中的文档(PDF,Word,Excel,Html)
使用LabVIEW的"Open a Document on Disk.vi",存于<LabVIEW>\vi.lib\Platform\browser.llb,可让默认应用打开硬盘文档。此VI仅基础打开功能,高级控制推荐LabVIEW Report Generation Toolkit或ActiveX。注意:避免版本升级问题,最好将VI复制到vi.lib外的目录。
253 3
|
6月前
|
Java Apache
Java将word、excel文件转成pdf文件
【5月更文挑战第26天】Java将word、excel文件转成pdf文件
1943 1
|
5月前
|
Java Linux 数据安全/隐私保护
libreOffice word 转 pdf
在Windows环境下,使用documents4j进行DOCX到PDF的转换大约需要20秒,而Linux环境下通过Docker配置LibreOffice进行转换,时间仅为1.4秒。documents4j仅适用于Windows且需Microsoft Office支持,libreOfficeCommand则依赖于Linux环境。Spire.Doc.Free有前4页免费但有水印,不推荐。
264 0
|
6月前
|
Java Linux 数据安全/隐私保护
Java【代码 16】将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理
【2月更文挑战第3天】Java 将word、excel文件转换为pdf格式和将pdf文档转换为image格式工具类分享(Gitee源码)aspose转换中文乱码问题处理
310 0