各位朋友,大家好。PDF转word功能应该是大多数新时代打工人需要的,但是现在市面上多数软件都是付费的,免费的软件效果也不太好。所以本人自己手搓了一个(当然是借助了 豆包AI 的神力),现在将程序简介,源python代码,转换好的exe程序放到文中,有需要的小伙伴欢迎自取,也欢迎大家给出宝贵修改意见,如果点个关注那就太好啦,我会感激涕零的!
《PDF 转 Word 程序说明》
一、程序概述
本程序是一个基于 Python 的图形用户界面(GUI)应用程序,使用 tkinter 库创建用户界面,主要功能是将用户选择的 PDF 文件转换为 Word 文档(.docx 格式)。该程序结合了 pdf2docx 和 fitz(PyMuPDF)库,前者用于实现 PDF 到 Word 的转换,后者用于检查 PDF 文件的可读性。
二、撰写思路
1. 需求分析
程序需要提供一个简单的用户界面,让用户能够方便地选择要转换的 PDF 文件。
程序需要对选择的 PDF 文件进行检查,确保文件可读。
程序需要将 PDF 文件转换为 Word 文档,并将转换结果反馈给用户。
2. 模块选择
tkinter:Python 的标准 GUI 库,用于创建用户界面,包括窗口、按钮和标签等组件。
filedialog:tkinter 的子模块,用于打开文件选择对话框,方便用户选择 PDF 文件。
os:Python 的标准库,用于处理文件路径和文件名,生成转换后的 Word 文件路径。
pdf2docx:第三方库,用于将 PDF 文件转换为 Word 文档。
fitz(PyMuPDF):第三方库,用于检查 PDF 文件的可读性,确保文件可以正常读取。
3. 功能实现
pdf_to_word 函数:
该函数接受一个 PDF 文件路径作为参数,负责将 PDF 文件转换为 Word 文档。
在转换前,更新界面状态为 “PDF 在转换中...”,并强制更新 UI 以实时显示状态。
使用 os.path.splitext 函数生成与输入 PDF 文件同路径的 Word 文件路径。
使用 fitz.open 函数打开 PDF 文件,逐页读取文本内容,以检查文件的可读性。如果检查失败,更新界面显示错误信息并返回。
创建 Converter 对象,调用 convert 方法将 PDF 文件转换为 Word 文档。
转换完成后,关闭转换器,并更新界面显示转换成功的信息和保存的 Word 文件路径。如果转换过程中出现异常,更新界面显示错误信息。
select_pdf_file 函数:
该函数用于打开文件选择对话框,只允许用户选择 PDF 文件。
如果用户选择了文件,调用 pdf_to_word 函数进行转换。
主程序部分:
创建主窗口,设置窗口标题和大小。
创建 “选择 PDF 文件” 按钮,绑定 select_pdf_file 函数,用户点击按钮时触发文件选择操作。
创建用于显示转换结果的标签,初始文本为 “请选择一个 PDF 文件”。
运行主循环,使窗口保持显示并响应用户操作。
三、使用说明
运行程序后,会弹出一个名为 “PDF 转 Word 应用” 的窗口。
点击 “选择 PDF 文件” 按钮,会弹出文件选择对话框。
在文件选择对话框中,选择要转换的 PDF 文件,然后点击 “打开” 按钮。
程序会开始检查 PDF 文件的可读性,并进行转换。转换过程中,界面会显示 “PDF 在转换中...”。
转换完成后,界面会显示转换结果。如果转换成功,会显示保存的 Word 文件路径;如果转换失败,会显示错误信息。
源代码:
import tkinter as tk
from tkinter import filedialog
import os
from pdf2docx import Converter
import fitz # PyMuPDF
def pdf_to_word(pdf_path):
将PDF文件转换为Word文档
:param pdf_path: 输入的PDF文件路径
try:
# 更新状态为转换中
result_label.config(text="PDF在转换中...")
root.update() # 强制更新UI
# 生成输出Word文件路径(与输入PDF同路径,扩展名改为.docx)
docx_path = os.path.splitext(pdf_path)[0] + ".docx"
# 尝试使用PyMuPDF检查PDF文件
try:
doc = fitz.open(pdf_path)
text = ""
for page in doc:
text += page.get_text()
doc.close()
except Exception as pdf_error:
result_label.config(text=f"PDF文件检查失败: {pdf_error}")
return
# 创建转换器对象
cv = Converter(pdf_path)
# 转换PDF到Word
cv.convert(docx_path, start=0, end=None)
# 关闭转换器
cv.close()
result_label.config(text=f"转换成功!Word文档已保存为: {docx_path}")
except Exception as e:
result_label.config(text=f"转换失败: {e}")
def select_pdf_file():
# 打开文件选择对话框,只允许选择PDF文件
file_path = filedialog.askopenfilename(filetypes=[("PDF files", "*.pdf")])
if file_path:
pdf_to_word(file_path)
# 创建主窗口
root = tk.Tk()
root.title("PDF转Word应用")
# 设置窗口大小
root.geometry("400x200")
# 创建选择文件按钮
select_button = tk.Button(root, text="选择PDF文件", command=select_pdf_file)
select_button.pack(pady=20)
# 创建用于显示转换结果的标签
result_label = tk.Label(root, text="请选择一个PDF文件", wraplength=300)
result_label.pack(pady=20)
# 运行主循环
root.mainloop()
通过网盘分享的文件:pdf2word2.exe
链接: https://pan.baidu.com/s/1xPeccPEywlnTgb7PmfAtUw?pwd=bfvi 提取码: bfvi 复制这段内容后打开百度网盘手机App,操作更方便哦
热门跟贴