各位朋友,大家好。PDF轉(zhuǎn)word功能應(yīng)該是大多數(shù)新時(shí)代打工人需要的,但是現(xiàn)在市面上多數(shù)軟件都是付費(fèi)的,免費(fèi)的軟件效果也不太好。所以本人自己手搓了一個(gè)(當(dāng)然是借助了 豆包AI 的神力),現(xiàn)在將程序簡(jiǎn)介,源python代碼,轉(zhuǎn)換好的exe程序放到文中,有需要的小伙伴歡迎自取,也歡迎大家給出寶貴修改意見,如果點(diǎn)個(gè)關(guān)注那就太好啦,我會(huì)感激涕零的!
《PDF 轉(zhuǎn) Word 程序說明》
一、程序概述
本程序是一個(gè)基于 Python 的圖形用戶界面(GUI)應(yīng)用程序,使用 tkinter 庫創(chuàng)建用戶界面,主要功能是將用戶選擇的 PDF 文件轉(zhuǎn)換為 Word 文檔(.docx 格式)。該程序結(jié)合了 pdf2docx 和 fitz(PyMuPDF)庫,前者用于實(shí)現(xiàn) PDF 到 Word 的轉(zhuǎn)換,后者用于檢查 PDF 文件的可讀性。
二、撰寫思路
1. 需求分析
程序需要提供一個(gè)簡(jiǎn)單的用戶界面,讓用戶能夠方便地選擇要轉(zhuǎn)換的 PDF 文件。
程序需要對(duì)選擇的 PDF 文件進(jìn)行檢查,確保文件可讀。
程序需要將 PDF 文件轉(zhuǎn)換為 Word 文檔,并將轉(zhuǎn)換結(jié)果反饋給用戶。
2. 模塊選擇
tkinter:Python 的標(biāo)準(zhǔn) GUI 庫,用于創(chuàng)建用戶界面,包括窗口、按鈕和標(biāo)簽等組件。
filedialog:tkinter 的子模塊,用于打開文件選擇對(duì)話框,方便用戶選擇 PDF 文件。
os:Python 的標(biāo)準(zhǔn)庫,用于處理文件路徑和文件名,生成轉(zhuǎn)換后的 Word 文件路徑。
pdf2docx:第三方庫,用于將 PDF 文件轉(zhuǎn)換為 Word 文檔。
fitz(PyMuPDF):第三方庫,用于檢查 PDF 文件的可讀性,確保文件可以正常讀取。
3. 功能實(shí)現(xiàn)
pdf_to_word 函數(shù):
該函數(shù)接受一個(gè) PDF 文件路徑作為參數(shù),負(fù)責(zé)將 PDF 文件轉(zhuǎn)換為 Word 文檔。
在轉(zhuǎn)換前,更新界面狀態(tài)為 “PDF 在轉(zhuǎn)換中...”,并強(qiáng)制更新 UI 以實(shí)時(shí)顯示狀態(tài)。
使用 os.path.splitext 函數(shù)生成與輸入 PDF 文件同路徑的 Word 文件路徑。
使用 fitz.open 函數(shù)打開 PDF 文件,逐頁讀取文本內(nèi)容,以檢查文件的可讀性。如果檢查失敗,更新界面顯示錯(cuò)誤信息并返回。
創(chuàng)建 Converter 對(duì)象,調(diào)用 convert 方法將 PDF 文件轉(zhuǎn)換為 Word 文檔。
轉(zhuǎn)換完成后,關(guān)閉轉(zhuǎn)換器,并更新界面顯示轉(zhuǎn)換成功的信息和保存的 Word 文件路徑。如果轉(zhuǎn)換過程中出現(xiàn)異常,更新界面顯示錯(cuò)誤信息。
select_pdf_file 函數(shù):
該函數(shù)用于打開文件選擇對(duì)話框,只允許用戶選擇 PDF 文件。
如果用戶選擇了文件,調(diào)用 pdf_to_word 函數(shù)進(jìn)行轉(zhuǎn)換。
主程序部分:
創(chuàng)建主窗口,設(shè)置窗口標(biāo)題和大小。
創(chuàng)建 “選擇 PDF 文件” 按鈕,綁定 select_pdf_file 函數(shù),用戶點(diǎn)擊按鈕時(shí)觸發(fā)文件選擇操作。
創(chuàng)建用于顯示轉(zhuǎn)換結(jié)果的標(biāo)簽,初始文本為 “請(qǐng)選擇一個(gè) PDF 文件”。
運(yùn)行主循環(huán),使窗口保持顯示并響應(yīng)用戶操作。
三、使用說明
運(yùn)行程序后,會(huì)彈出一個(gè)名為 “PDF 轉(zhuǎn) Word 應(yīng)用” 的窗口。
點(diǎn)擊 “選擇 PDF 文件” 按鈕,會(huì)彈出文件選擇對(duì)話框。
在文件選擇對(duì)話框中,選擇要轉(zhuǎn)換的 PDF 文件,然后點(diǎn)擊 “打開” 按鈕。
程序會(huì)開始檢查 PDF 文件的可讀性,并進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換過程中,界面會(huì)顯示 “PDF 在轉(zhuǎn)換中...”。
轉(zhuǎn)換完成后,界面會(huì)顯示轉(zhuǎn)換結(jié)果。如果轉(zhuǎn)換成功,會(huì)顯示保存的 Word 文件路徑;如果轉(zhuǎn)換失敗,會(huì)顯示錯(cuò)誤信息。
源代碼:
import tkinter as tk
from tkinter import filedialog
import os
from pdf2docx import Converter
import fitz # PyMuPDF
def pdf_to_word(pdf_path):
將PDF文件轉(zhuǎn)換為Word文檔
:param pdf_path: 輸入的PDF文件路徑
try:
# 更新狀態(tài)為轉(zhuǎn)換中
result_label.config(text="PDF在轉(zhuǎn)換中...")
root.update() # 強(qiáng)制更新UI
# 生成輸出Word文件路徑(與輸入PDF同路徑,擴(kuò)展名改為.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
# 創(chuàng)建轉(zhuǎn)換器對(duì)象
cv = Converter(pdf_path)
# 轉(zhuǎn)換PDF到Word
cv.convert(docx_path, start=0, end=None)
# 關(guān)閉轉(zhuǎn)換器
cv.close()
result_label.config(text=f"轉(zhuǎn)換成功!Word文檔已保存為: {docx_path}")
except Exception as e:
result_label.config(text=f"轉(zhuǎn)換失敗: {e}")
def select_pdf_file():
# 打開文件選擇對(duì)話框,只允許選擇PDF文件
file_path = filedialog.askopenfilename(filetypes=[("PDF files", "*.pdf")])
if file_path:
pdf_to_word(file_path)
# 創(chuàng)建主窗口
root = tk.Tk()
root.title("PDF轉(zhuǎn)Word應(yīng)用")
# 設(shè)置窗口大小
root.geometry("400x200")
# 創(chuàng)建選擇文件按鈕
select_button = tk.Button(root, text="選擇PDF文件", command=select_pdf_file)
select_button.pack(pady=20)
# 創(chuàng)建用于顯示轉(zhuǎn)換結(jié)果的標(biāo)簽
result_label = tk.Label(root, text="請(qǐng)選擇一個(gè)PDF文件", wraplength=300)
result_label.pack(pady=20)
# 運(yùn)行主循環(huán)
root.mainloop()
通過網(wǎng)盤分享的文件:pdf2word2.exe
鏈接: https://pan.baidu.com/s/1xPeccPEywlnTgb7PmfAtUw?pwd=bfvi 提取碼: bfvi 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機(jī)App,操作更方便哦
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.