侧边栏壁纸
博主头像
王旭阳个人博客博主等级

工欲善其事,必先利其器

  • 累计撰写 120 篇文章
  • 累计创建 28 个标签
  • 累计收到 25 条评论

目 录CONTENT

文章目录

使用Python写一个pdf转word工具

wxy
wxy
2023-11-25 / 0 评论 / 4 点赞 / 88 阅读 / 4488 字
温馨提示:
本文最后更新于 2023-11-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

2023-11-24-xsudprfe.png

调用ConvertAPI接口实现pdf转world

pdf2world.py

import os
import webbrowser

import convertapi
import tkinter as tk
from tkinter import filedialog, messagebox
import threading

# 设置 ConvertAPI 的 API Secret
# https://www.convertapi.com/a/auth
convertapi.api_secret = '***********'  # 替换为你的 ConvertAPI API Secret


# 函数:选择PDF文件
def select_pdf_file():
    global pdf_file_path
    pdf_file_path = filedialog.askopenfilename(title="选择PDF文件", filetypes=[("PDF文件", "*.pdf")])
    pdf_file_label.config(text=pdf_file_path)


# 函数:选择转换后的存放目录
def select_output_directory():
    global output_dir
    output_dir = filedialog.askdirectory(title="选择转换后的存放目录")
    output_dir_label.config(text=output_dir)


# 函数:执行PDF转换为Word
def convert_pdf_to_word():
    global pdf_file_path, output_dir

    # 如果用户未选择PDF文件或输出目录,显示错误提示
    if not pdf_file_path or not output_dir:
        messagebox.showerror("错误", "请先选择要转换的PDF文件和转换后的Word文件保存目录")
        return

    # 创建"请稍等"提示窗口
    wait_window = tk.Toplevel(root)
    wait_window.title("请稍等")
    wait_label = tk.Label(wait_window, text="转换中,请稍等...", font=("Arial", 12))
    wait_label.pack(padx=20, pady=10)

    try:
        # 创建线程进行转换
        convert_thread = threading.Thread(target=perform_conversion, args=(wait_window,))
        convert_thread.start()
    except Exception as e:
        messagebox.showerror("转换失败", f"转换失败: {e}")


# 函数:执行实际的转换
def perform_conversion(wait_window):
    global pdf_file_path, output_dir

    try:
        # 转换为 Word 格式
        result = convertapi.convert('docx', {'File': pdf_file_path}, from_format='pdf')

        # 确保输出目录存在,如果不存在则创建
        os.makedirs(output_dir, exist_ok=True)

        # 获取原始文件名(去掉路径部分)
        base_file_name = os.path.basename(pdf_file_path)

        # 保存转换后的文件到指定目录,使用原始文件名
        output_file_path = os.path.join(output_dir, base_file_name.replace('.pdf', '.docx'))
        result.save_files(output_file_path)

        # 关闭"请稍等"提示窗口
        wait_window.destroy()

        messagebox.showinfo("转换完成", f"Word 文件已保存到:{output_file_path}")
    except convertapi.exceptions.ApiError as e:
        # 关闭"请稍等"提示窗口
        wait_window.destroy()

        messagebox.showerror("转换失败", f"转换失败: {e}")


def open_link(event):
    webbrowser.open("https://www.wxy97.com")


if __name__ == '__main__':
    # 创建主窗口
    root = tk.Tk()
    root.title("PDF转Word工具")
    root.geometry("400x300")  # 设置窗口大小

    # 标签和按钮,用于选择PDF文件和转换后的存放目录
    pdf_file_label = tk.Label(root, text="选择要转换的PDF文件")
    pdf_file_label.pack(pady=10)
    pdf_file_button = tk.Button(root, text="选择PDF文件", command=select_pdf_file)
    pdf_file_button.pack(pady=5)

    output_dir_label = tk.Label(root, text="选择转换后的存放目录")
    output_dir_label.pack(pady=10)
    output_dir_button = tk.Button(root, text="选择存放目录", command=select_output_directory)
    output_dir_button.pack(pady=5)

    convert_button = tk.Button(root, text="转换成Word", command=convert_pdf_to_word)
    convert_button.pack(pady=20)

    # 显示联系方式
    contact_label = tk.Label(root, text="https://www.wxy97.com", font=("宋体", 10), fg="blue", cursor="hand2")
    contact_label.place(relx=1.0, rely=1.0, anchor="se")  # 放在右下角
    # 绑定点击事件
    contact_label.bind("<Button-1>", open_link)

    # 开启主循环
    root.mainloop()

需要注意 convertapi.api_secret = '***********' # 替换为你的 ConvertAPI API Secret

调用的是国外的接口,只能免费250次,可以注册个账号更换一下API就可
注册地址:https://www.convertapi.com

4

评论区