一站式 PDF 處理工具箱,採用 PySide6 構建,Catppuccin Mocha 暗色主題。
前往 Releases 下載最新版 Windows 執行檔(免安裝,直接執行)。
| 功能 | 說明 |
|---|---|
| 🔓 PDF 解鎖/修復 | 多引擎修復鏈(PyMuPDF → PyPDF2 → pikepdf → Ghostscript → 複製) |
| 🖼️ PDF 轉 PNG | 使用 pdftoppm 高品質轉換,支援自訂 DPI |
| 🔒 PDF 禁止複製 | 雙層加密保護(pikepdf + PyPDF2) |
| 📎 PDF 合併 | 拖放排序,合併多個 PDF 為一個檔案 |
| ✂️ PDF 拆分 | 按範圍、每 N 頁或提取特定頁面 |
| 🔄 PDF 旋轉 | 支援 90°/180°/270° 旋轉 |
| 💧 PDF 浮水印 | 文字/圖片浮水印,可調透明度、角度、位置 |
| 📦 PDF 壓縮 | Ghostscript / PyMuPDF 雙引擎壓縮 |
| 自訂頁面順序,支援反轉 |
側邊欄導航 + Catppuccin Mocha 暗色主題
- Python 3.14+
- uv 套件管理器
- (選用) Ghostscript — 用於 PDF 壓縮
- (選用) poppler (pdftoppm) — 用於 PDF 轉 PNG
# 複製專案
git clone https://github.com/LostSunset/PDF_Toolbox.git
cd PDF_Toolbox
# 安裝依賴
uv sync
# 啟動應用程式
uv run python -m pdf_toolbox# 方式一:模組啟動
uv run python -m pdf_toolbox
# 方式二:指令啟動
uv run pdf-toolbox啟動後透過左側側邊欄選擇功能,將 PDF 檔案拖放至工作區或點擊「新增檔案」按鈕。
src/pdf_toolbox/
├── core/ # 核心邏輯(純 Python,無 Qt 依賴)
├── workers/ # QThread 背景執行緒
└── gui/ # PySide6 UI 層
├── widgets/ # 共用元件
└── pages/ # 功能頁面
三層分離架構:Core(可獨立測試的純邏輯)→ Workers(QThread 橋接)→ GUI(PySide6 介面)。
- CI:每次 push / PR 自動執行 ruff lint + pytest
- Release:推送
v*tag 時自動構建 Windows EXE 並上傳至 GitHub Releases
| 套件 | 用途 |
|---|---|
| PySide6 | GUI 框架 |
| pikepdf | PDF 合併/拆分/旋轉/重排序 |
| PyPDF2 | PDF 加密/保護 |
| PyMuPDF | PDF 解鎖/修復/浮水印/壓縮 |
| reportlab | PDF 生成輔助 |
# 安裝開發依賴
uv sync
# 格式化 + Lint
uv run ruff format src/ tests/
uv run ruff check --fix src/ tests/
# 執行測試
uv run pytest
# 本地構建 EXE
uv run pyinstaller --name PDF_Toolbox --windowed --onefile src/pdf_toolbox/app.py