RePDF — Rearrange PDF
RePDF 是 Rearrange PDF 的意思,命令名稱與 Python 套件名稱為 repdf。這是使用 PySide6 製作的 Windows 桌面工具,可用標籤頁開啟多個 PDF、勾選指定頁面,並依標籤與頁面排列順序重組或拆分輸出。預覽縮圖不會影響輸出品質。
安裝與啟動
1. 下載發布的執行檔/App(建議)
從 GitHub Releases 下載適合平台的檔案,不需要安裝 Python 或 uv:
- Windows x86_64:下載
repdf-<版本>-windows-x86_64.exe,直接執行。 - macOS Apple Silicon(arm64):下載
repdf-<版本>-macos-arm64.dmg,開啟後將RePDF.app拖入 Applications,再從 Applications 啟動。
既有 v0.0.7 及較早的 Release 仍使用 PDFPick 檔名與 PDFPick.app,v0.0.8 的 macOS App 名稱為 repdf.app;自 v0.0.9 起 App 名稱為 RePDF.app,命令與發布檔案前綴仍為 repdf。
Release 同時提供 SHA256 校驗檔。簽章與打包資訊見下方「Windows 執行檔與 macOS App/DMG」。
2. 使用 uv tool 安裝
已有 uv 時,可從 PyPI 安裝到獨立工具環境:
uv tool install repdf
repdf
需要 Python 3.11 以上版本;uv 可在需要時下載適用的 Python。也可使用 Release 的 repdf wheel 下載網址安裝。若終端機找不到 repdf,執行 uv tool update-shell 後重新開啟終端機。既有舊版 wheel 仍安裝為 pdfpick 指令。
3. 從原始碼使用 uv run
適合開發或修改程式。下載原始碼,或 clone 本儲存庫後,進入專案目錄執行:
uv sync
uv run repdf
操作方式
工具列按鈕的圖示與用途如下;將游標停在按鈕上也可查看 tooltip。
| 工具列圖示/控制元件 | 功能 | 操作說明 | 快捷鍵 |
|---|---|---|---|
| 開啟 PDF | 一次選取多個 PDF,也可從檔案總管拖入。 | Ctrl+O | |
| 重組輸出 | 將選取頁面依目前順序合併為一個新 PDF,指定檔名與儲存位置。 | Ctrl+S/Ctrl+Shift+S | |
| 拆分輸出 | 將選取頁面依目前順序逐頁存成獨立 PDF,指定基本檔名與儲存位置。 | — | |
| 單數頁 | 選取或取消目前標籤的原始單數頁;部分選取時顯示三態標記。 | — | |
| 雙數頁 | 選取或取消目前標籤的原始雙數頁;部分選取時顯示三態標記。 | — | |
| 複製文字 | 點擊切換文字模式,啟用時按鈕會顯示選取底色。拖曳時實際選到的字會以螢光筆標示;放開滑鼠即複製到剪貼簿。關閉後恢復拖放排序;掃描影像需先經 OCR。全螢幕預覽也適用。 | — | |
| 顯示比例 | 滑桿調整 25%–200%;點擊比例回到 100%。鍵盤縮放每次調整 25 個百分點,完整說明在比例的 tooltip。 | 放大:Ctrl++/Ctrl+=;縮小:Ctrl+-;100%:Ctrl+0 | |
| Fit | 將目前單頁等比例縮放至預覽區;調整視窗大小時自動適應。拖動滑桿或使用縮放快捷鍵會回到手動比例。 | — | |
| 全螢幕單頁 | 每次顯示一頁,依螢幕寬度或高度等比例填滿;可用頁面上方的核取方塊選頁。 | F11 開啟/返回;Esc 返回 | |
| 全螢幕對頁 | 依目前順序兩頁並排:第 1、2 頁一組,第 3、4 頁一組,以此類推;每頁可獨立勾選。 | Esc/F11 返回 | |
| 全螢幕封面+對頁 | 目前順序的第一頁作為封面單獨顯示;第 2、3 頁一組,第 4、5 頁一組,以此類推;每頁可獨立勾選。 | Esc/F11 返回 | |
| 介面語言 | 點擊依序切換「跟隨系統 → 繁體中文 → English」,選擇會記住。 | — | |
| 介面配色 | 點擊依序切換「跟隨系統 → 淺色 → 深色」,選擇會記住。 | — |
各檔案以主檔名顯示在標籤頁,完整路徑顯示於標籤 tooltip;視窗標題列只顯示 RePDF 與版本編號。同一路徑再次開啟會切換到既有標籤。預覽頁面水平置中,Fit 使用單欄顯示。各檔案獨立保留比例、捲動位置、選頁與頁面排序;100% 對應 Windows 的 96 DPI 顯示尺度。
Fit 與全螢幕優先使用最近點擊且仍可見的頁面;未指定時使用預覽區中央附近的頁面。Fit 的適應比例可超出滑桿的手動範圍,實際比例仍顯示於工具列。
方向鍵及 Page Up/Page Down 固定操作預覽區,即使縮放滑桿有焦點也不會改變比例:一般預覽時方向鍵捲動、Page Up/Page Down 捲動一個畫面;Fit 時從目前可見頁面依順序切換上一頁/下一頁,第一頁與最後一頁不會越界,反向按一次即可切頁。全螢幕時左/上/Page Up 顯示上一頁或上一組,右/下/Page Down 顯示下一頁或下一組。對頁以同一比例完整顯示兩頁,最後剩一頁時單獨顯示。
全螢幕的核取方塊會同步主視窗的選頁,返回後即可重組或拆分,原有縮放比例保留。核取方塊取得焦點後也可用空白鍵勾選。
點選各頁左上角的核取方塊可個別選頁。拖曳頁面縮圖或「拖曳排序」把手時,縮圖會跟隨游標,其他頁面以動畫移開並顯示插入空位。移到頁面左半部可插入其前方,右半部可插入其後方;放開確認排序,按 Esc 取消。
拆分時,例如指定 report.pdf,會輸出 report_01.pdf、report_02.pdf。序號從 1 開始,至少兩位,依本次輸出總數補零對齊(100 頁使用 001–100),與原始頁碼無關。已存在的單頁檔案會先詢問是否覆蓋。
標籤左側核取方塊預設不勾選。有勾選標籤時,只輸出勾選檔案的已選頁面;沒有勾選任何標籤時,只輸出目前標籤的已選頁面。勾選檔案沒有選頁時不提供輸出頁面,不會自動改選目前檔案。拖曳標籤可調整檔案順序,輸出先依標籤順序,再依各檔內的頁面排序;拆分序號跨檔連續。按標籤右側的 × 或使用系統慣用快捷鍵可關閉目前標籤:Windows/Linux 為 Ctrl+W,Windows 也支援 Ctrl+F4;macOS 為 ⌘W。關閉按鈕的 tooltip 會顯示目前平台適用的快捷鍵。
密碼保護的 PDF 暫不支援。輸出頁面依畫面排列順序;未勾選的頁面不會輸出。
語言與配色
工具列右側提供兩個三態按鈕,首次使用皆預設跟隨系統,點擊即可立即切換:
- 介面語言:跟隨系統 → 繁體中文 → English → 跟隨系統。系統顯示語言為中文時使用繁體中文,其他語言使用 English;tooltip 顯示目前模式與實際語言。
- 介面配色:跟隨系統 → 淺色 → 深色 → 跟隨系統。手動指定配色後不受系統配色變化影響,回到系統模式則即時跟隨。
選擇會記住,重新啟動仍保留。切換語言會更新既有頁面標籤、工具列、tooltip、狀態與對話框,不改動檔名、選頁、頁序或比例。檔案對話框採用 Qt 介面,讓按鈕與欄位也能跟隨指定的中英文語言。
測試
uv run pytest
開發與維護
目前架構、背景預覽協定、縮放定義、輸出安全機制與修改入口整理於 實作與維護指南。
Windows 執行檔與 macOS App/DMG
GitHub Actions 的「Build desktop apps」會在 main 更新、PR 或 Release 發佈時打包,也可在 Actions 頁面以 Run workflow 手動執行並指定分支或標籤。Release 的標籤必須包含打包設定檔。
產物包含 Windows x86_64 單一 EXE、macOS Apple Silicon(arm64)DMG,以及 SHA256 校驗檔。手動執行與一般提交的產物可從 Actions 的 Artifacts 下載;Release 發佈時會自動附加到該 Release。DMG 中可將 RePDF.app 拖入 Applications,不需要另外安裝 Python。
目前未設定 Windows 程式碼簽章或 macOS Developer ID 簽章/公證,因此下載後可能出現系統的安全提示;這些套件並非已公證的 macOS 發行版。
打包全程在 GitHub 雲端環境執行。流程會先驗證 Qt、圖示、背景 PDF 渲染與重排輸出;macOS 使用系統內建的 ditto 與 hdiutil 建立並驗證 DMG。Actions 產物保留 30 天。
Metadata
Release files for repdf 0.0.10
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| repdf-0.0.10.tar.gz | 686.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| repdf-0.0.10-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.4 MB
Release files / repdf-0.0.10.tar.gz
| Download URL | repdf-0.0.10.tar.gz |
|---|---|
| Size | 686.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7f63d9ffac4bada5d8f75c58417756ebd9384697de33849646b063577edc1ebe
|
|
BLAKE2b-256 checksum How to use checksums |
853e2f46897b09509ecdbccf7407df194997ac1112434c9b307a02d4842838d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / repdf-0.0.10-py3-none-any.whl
| Download URL | repdf-0.0.10-py3-none-any.whl |
|---|---|
| Size | 689.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5d71e3fb80e765c0e105ea848b12a5dbdd662fd20dd3d98da51b6d1220b1798f
|
|
BLAKE2b-256 checksum How to use checksums |
b1542452c66c5e88ca464c6cd537d4a4af775eb646f470956fa899f8425c8ab5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for repdf 0.0.10
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.