Python?GUI實現(xiàn)PDF轉(zhuǎn)Word功能
在日常工作中,我們經(jīng)常需要將 PDF 文檔轉(zhuǎn)換為 Word 文件。幸運的是,Python 提供了很多強大的庫,幫助我們實現(xiàn)這一功能。今天,我將與大家分享如何使用 wxPython 創(chuàng)建一個簡單的圖形用戶界面(GUI)應(yīng)用程序,結(jié)合 pdf2docx 庫,實現(xiàn)將 PDF 轉(zhuǎn)換為 Word 文檔的功能。
項目概述
這個小工具的主要目的是通過一個簡單的窗口,讓用戶選擇一個 PDF 文件,然后點擊“轉(zhuǎn)換”按鈕,程序會將 PDF 文件轉(zhuǎn)換為 Word 格式并保存在相同目錄下。我們將使用 wxPython 來創(chuàng)建圖形界面,pdf2docx 來進行實際的 PDF 轉(zhuǎn)換。
全部代碼
import wx
import os
from pdf2docx import Converter
class PDFConverterFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='PDF to Word Converter', size=(500, 200))
self.pdf_path = None
# Create main panel
panel = wx.Panel(self)
# Create vertical box sizer
vbox = wx.BoxSizer(wx.VERTICAL)
# Create file picker button
self.file_picker = wx.FilePickerCtrl(
panel,
message="Choose a PDF file",
wildcard="PDF files (*.pdf)|*.pdf",
style=wx.FLP_USE_TEXTCTRL | wx.FLP_OPEN | wx.FLP_FILE_MUST_EXIST
)
vbox.Add(self.file_picker, 0, wx.ALL | wx.EXPAND, 5)
# Create status text
self.status_text = wx.StaticText(panel, label="Select a PDF file to convert")
vbox.Add(self.status_text, 0, wx.ALL | wx.CENTER, 5)
# Create convert button
convert_btn = wx.Button(panel, label='Convert to Word')
convert_btn.Bind(wx.EVT_BUTTON, self.on_convert)
vbox.Add(convert_btn, 0, wx.ALL | wx.CENTER, 5)
# Set panel sizer
panel.SetSizer(vbox)
# Center window on screen
self.Centre()
def on_convert(self, event):
pdf_path = self.file_picker.GetPath()
if not pdf_path:
wx.MessageBox('Please select a PDF file first!', 'Error', wx.OK | wx.ICON_ERROR)
return
if not os.path.exists(pdf_path):
wx.MessageBox('Selected PDF file does not exist!', 'Error', wx.OK | wx.ICON_ERROR)
return
# Generate output path (same name, same directory, .docx extension)
docx_path = os.path.splitext(pdf_path)[0] + '.docx'
try:
# Update status
self.status_text.SetLabel("Converting... Please wait.")
self.Layout()
# Convert PDF to Word
cv = Converter(pdf_path)
cv.convert(docx_path)
cv.close()
# Show success message
self.status_text.SetLabel("Conversion completed successfully!")
wx.MessageBox(
f'PDF has been converted to Word!\nSaved as: {docx_path}',
'Success',
wx.OK | wx.ICON_INFORMATION
)
except Exception as e:
# Show error message
self.status_text.SetLabel("Conversion failed!")
wx.MessageBox(
f'An error occurred during conversion:\n{str(e)}',
'Error',
wx.OK | wx.ICON_ERROR
)
if __name__ == '__main__':
# Initialize wx application
app = wx.App()
# Create and show frame
frame = PDFConverterFrame()
frame.Show()
# Start application main loop
app.MainLoop()
項目要求
wxPython:用于創(chuàng)建圖形界面。
pdf2docx:一個將 PDF 文件轉(zhuǎn)換為 DOCX 文件的 Python 庫。
操作系統(tǒng)文件管理功能:用于檢查文件是否存在,并獲取文件路徑。
代碼結(jié)構(gòu)
我們來看看完整的代碼,并逐行解析每個部分的功能。
import wx
import os
from pdf2docx import Converter
class PDFConverterFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title='PDF to Word Converter', size=(500, 200))
self.pdf_path = None
# 創(chuàng)建主面板
panel = wx.Panel(self)
# 創(chuàng)建垂直排列的布局
vbox = wx.BoxSizer(wx.VERTICAL)
# 創(chuàng)建文件選擇控件
self.file_picker = wx.FilePickerCtrl(
panel,
message="Choose a PDF file",
wildcard="PDF files (*.pdf)|*.pdf",
style=wx.FLP_USE_TEXTCTRL | wx.FLP_OPEN | wx.FLP_FILE_MUST_EXIST
)
vbox.Add(self.file_picker, 0, wx.ALL | wx.EXPAND, 5)
# 創(chuàng)建狀態(tài)文本控件
self.status_text = wx.StaticText(panel, label="Select a PDF file to convert")
vbox.Add(self.status_text, 0, wx.ALL | wx.CENTER, 5)
# 創(chuàng)建轉(zhuǎn)換按鈕
convert_btn = wx.Button(panel, label='Convert to Word')
convert_btn.Bind(wx.EVT_BUTTON, self.on_convert)
vbox.Add(convert_btn, 0, wx.ALL | wx.CENTER, 5)
# 設(shè)置面板布局
panel.SetSizer(vbox)
# 窗口居中顯示
self.Centre()
def on_convert(self, event):
# 獲取選擇的 PDF 文件路徑
pdf_path = self.file_picker.GetPath()
if not pdf_path:
wx.MessageBox('Please select a PDF file first!', 'Error', wx.OK | wx.ICON_ERROR)
return
if not os.path.exists(pdf_path):
wx.MessageBox('Selected PDF file does not exist!', 'Error', wx.OK | wx.ICON_ERROR)
return
# 生成輸出路徑(同名的 DOCX 文件)
docx_path = os.path.splitext(pdf_path)[0] + '.docx'
try:
# 更新狀態(tài)文本為正在轉(zhuǎn)換
self.status_text.SetLabel("Converting... Please wait.")
self.Layout()
# 使用 pdf2docx 庫進行轉(zhuǎn)換
cv = Converter(pdf_path)
cv.convert(docx_path)
cv.close()
# 轉(zhuǎn)換成功后更新狀態(tài)文本
self.status_text.SetLabel("Conversion completed successfully!")
wx.MessageBox(
f'PDF has been converted to Word!\nSaved as: {docx_path}',
'Success',
wx.OK | wx.ICON_INFORMATION
)
except Exception as e:
# 如果發(fā)生錯誤,顯示錯誤信息
self.status_text.SetLabel("Conversion failed!")
wx.MessageBox(
f'An error occurred during conversion:\n{str(e)}',
'Error',
wx.OK | wx.ICON_ERROR
)
if __name__ == '__main__':
# 啟動 wxPython 應(yīng)用
app = wx.App()
# 創(chuàng)建并顯示窗口
frame = PDFConverterFrame()
frame.Show()
# 進入應(yīng)用的主循環(huán)
app.MainLoop()
代碼解析
1. 創(chuàng)建窗口和面板
我們首先通過 wx.Frame 創(chuàng)建了主窗口,wx.Panel 用作主窗口中的面板,所有控件都將放置在這個面板中。wx.BoxSizer(wx.VERTICAL) 用來管理控件的布局,確保它們在窗口中按垂直方向排列。
panel = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL)
2. 文件選擇器
我們使用 wx.FilePickerCtrl 來允許用戶選擇 PDF 文件。通過設(shè)置 wildcard,我們限制了文件選擇框只顯示 .pdf 文件。
self.file_picker = wx.FilePickerCtrl(
panel,
message="Choose a PDF file",
wildcard="PDF files (*.pdf)|*.pdf",
style=wx.FLP_USE_TEXTCTRL | wx.FLP_OPEN | wx.FLP_FILE_MUST_EXIST
)
3. 狀態(tài)文本
狀態(tài)文本用來實時反饋轉(zhuǎn)換過程中的信息(如正在轉(zhuǎn)換、轉(zhuǎn)換成功或失?。?。
self.status_text = wx.StaticText(panel, label="Select a PDF file to convert")
4. 轉(zhuǎn)換按鈕
點擊按鈕時觸發(fā) on_convert 方法,該方法首先檢查是否選擇了文件,然后檢查文件是否存在,最后調(diào)用 pdf2docx 庫進行轉(zhuǎn)換。
convert_btn = wx.Button(panel, label='Convert to Word') convert_btn.Bind(wx.EVT_BUTTON, self.on_convert)
5. 文件轉(zhuǎn)換
文件轉(zhuǎn)換過程通過 pdf2docx.Converter 完成。轉(zhuǎn)換過程中,程序會更新狀態(tài)文本,提示用戶正在進行轉(zhuǎn)換,并在成功完成后顯示結(jié)果信息。
cv = Converter(pdf_path) cv.convert(docx_path) cv.close()
6. 錯誤處理
如果轉(zhuǎn)換過程中出現(xiàn)任何問題,程序會捕獲異常并彈出錯誤提示。
except Exception as e:
self.status_text.SetLabel("Conversion failed!")
wx.MessageBox(f'An error occurred during conversion:\n{str(e)}', 'Error', wx.OK | wx.ICON_ERROR)
如何運行這個程序
確保你已經(jīng)安裝了所需的 Python 庫:
pip install wxPython pdf2docx
將上述代碼保存為 pdf_to_word_converter.py 文件。
在終端或命令行中運行該文件:
python pdf_to_word_converter.py
打開程序后,選擇一個 PDF 文件,點擊“Convert to Word”按鈕,程序會自動將其轉(zhuǎn)換為 Word 文件。
運行結(jié)果

以上就是Python GUI實現(xiàn)PDF轉(zhuǎn)Word功能的詳細內(nèi)容,更多關(guān)于Python PDF轉(zhuǎn)Word的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實現(xiàn)PS濾鏡的旋轉(zhuǎn)模糊功能示例
這篇文章主要介紹了Python實現(xiàn)PS濾鏡的旋轉(zhuǎn)模糊功能,涉及Python基于skimage庫針對圖片進行旋轉(zhuǎn)與模糊化處理的相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
關(guān)于sys.stdout和print的區(qū)別詳解
今天小編就為大家分享一篇關(guān)于sys.stdout和print的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Jetson Xavier NX安裝CUDA支持的PyTorch教程
本文介紹了在Jetson Xavier NX上安裝CUDA支持的PyTorch的方法,提供了兩種安裝方式,一種是直接安裝編譯好的PyTorch輪子,另一種是自己從源碼構(gòu)建,文中詳細描述了安裝前的準備工作、安裝步驟以及可能遇到的問題和解決方案2026-04-04
Python中的遠程調(diào)試與性能優(yōu)化技巧分享
Python 是一種簡單易學、功能強大的編程語言,廣泛應(yīng)用于各種領(lǐng)域,包括網(wǎng)絡(luò)編程、數(shù)據(jù)分析、人工智能等,在開發(fā)過程中,我們經(jīng)常會遇到需要遠程調(diào)試和性能優(yōu)化的情況,本文將介紹如何利用遠程調(diào)試工具和性能優(yōu)化技巧來提高 Python 應(yīng)用程序的效率和性能2024-05-05

