一套以 Python 開發的現代化桌面 PDF 處理工具。
PDFEx 是一款專為 Windows 設計的桌面 PDF 工具,提供 PDF 合併、分割、逐頁分割、圖片轉 PDF 及 Office 文件轉 PDF 等功能。
本專案除了著重於 PDF 處理功能外,也以分層式架構(Layered Architecture)設計,將 UI、流程控制、商業邏輯及基礎設施分離,以提升程式的可維護性、可擴充性與可讀性。
本專案同時作為個人軟體工程作品集,展示桌面應用程式開發、PDF 文件處理及軟體架構設計能力。
- 合併多個 PDF
- 自訂頁碼分割
- 逐頁分割
- 支援頁碼範圍解析
- 自動頁碼格式轉換
- 圖片 → PDF
- Word → PDF
- Excel → PDF
- PowerPoint → PDF
- 現代化桌面介面(CustomTkinter)
- PDF 縮圖預覽
- 批次處理
- 多種匯出模式
- 自動偵測 Office 支援
PDFEx 採用分層式架構(Layered Architecture),將不同職責拆分為 UI、Controller、Service、Domain 及 Infrastructure,各層僅負責自身工作,使程式具有良好的可維護性與擴充性。
UI Layer
┌──────────────────────────────────────────────┐
│ MainWindow │
│ Toolbar │ Sidebar │ File List │ Preview │
└──────────────────────────────────────────────┘
│
▼
Controller Layer
┌──────────────────────────────────────────────┐
│ ImportController │
│ PDFController │
│ ExportController │
│ FileListController │
└──────────────────────────────────────────────┘
│
▼
Service Layer
┌──────────────────────────────────────────────┐
│ PDFService │
│ OutputService │
│ ImportService │
│ PreviewService │
│ ConversionService │
└──────────────────────────────────────────────┘
│
▼
Domain / Infrastructure Layer
┌──────────────────────────────────────────────┐
│ DocumentItem │
│ Page Parser │
│ Poppler │
│ Office Automation │
│ pypdf │
└──────────────────────────────────────────────┘
PDFEx
│
├── config/ # 專案設定
│
├── core/
│ ├── controller/ # 流程控制
│ ├── domain/ # 領域模型與商業規則
│ ├── infrastructure/ # 外部工具整合
│ └── services/ # PDF 與文件處理邏輯
│
├── ui/
│ ├── components/ # UI 元件
│ ├── windows/ # 視窗
│ └── theme/ # 主題樣式
│
├── resources/ # 圖示、資源
├── licenses/ # 授權文件
└── utils/ # 共用工具
- Python
- CustomTkinter
- Tkinter
- pypdf
- Pillow
- Poppler
- pywin32
- PyInstaller
- Inno Setup
- 分層式架構(Layered Architecture)
- Controller / Service 分工
- 模組化 UI 設計
- 可重複使用的 PDF 處理流程
- 支援多種文件格式轉換
- 易於維護與擴充
預計持續加入以下功能:
- OCR 文字辨識
- 更多 PDF 分割模式
- PDF 預覽功能強化
- AI 輔助文件處理
- 更多文件格式支援
- Docker跨平台
- 字體大小調整
- Windows 10 / Windows 11
- Microsoft Office(Office 轉 PDF 功能需安裝)
- Poppler(已內建)
詳細授權內容請參閱 licenses_tw、 licenses_en 等相關文件。