一个用 Python 和 PySide6 编写的轻量级 PDF 编辑器,支持多 PDF 文件的页面级操作、合并、排序、旋转、删除等常用功能。适合日常 PDF 页面管理与编辑。
- 支持工作区,管理多个 PDF 文件
- PDF 文件浏览与页面缩略图预览
- 页面多选、Ctrl/Shift 多选、连续多选
- 页面拖拽排序(支持多选拖拽)
- 页面旋转(左旋/右旋,批量支持)
- 页面删除(批量支持)
- 合并选中页面为新 PDF
- 合并全部页面为新 PDF
- 删除工作区中的 PDF 文件
- 撤销与重做(Ctrl+Z / Ctrl+R)
- 右键菜单与工具栏操作
- Python 3.8+
- uv 包管理器
- PySide6
- PyMuPDF
pdfEditor/
├── main.py # 主程序入口与主窗口
├── pdf_operations.py # PDF 合并等操作
├── viewer.py # 页面缩略图预览与交互
├── workspace.py # 工作区与数据结构
├── utils.py # 工具函数
└── README.mdclass Workspace:
def __init__(self):
self.pdf_files = [] # 当前工作区的所有 PDF 文件
class PDFFile:
def __init__(self, file_path):
self.file_path = file_path
self.pages = [] # PDFPage 对象列表
class PDFPage:
def __init__(self, page_number, thumbnail, parent_pdf_path):
self.page_number = page_number
self.thumbnail = thumbnail
self.parent_pdf_path = parent_pdf_path
self.rotation = 0
def update_thumbnail(self):
# 根据 rotation 重新生成缩略图
...- 新建工作区:菜单栏“文件”->“新建工作区”,清空当前所有 PDF。
- 添加 PDF:菜单栏“文件”->“添加PDF”,可批量添加 PDF 文件到工作区。
- 删除 PDF:菜单栏“文件”->“删除PDF”,弹窗选择要删除的 PDF 文件。
- 页面缩略图:所有 PDF 页面以缩略图形式平铺显示,支持滚动浏览。
- 页面选中:
- 单击页面:选中该页面(高亮显示)。
- Ctrl+单击:多选页面(不会取消已选页面)。
- Shift+单击:连续多选。
- 再次单击已选页面或切换到单选模式时可取消选中。
- 页面拖拽排序:
- 支持单选或多选页面拖拽,拖拽到目标页面后面(第一页支持左右插入)。
- 拖拽时高亮目标页面,松开鼠标后完成排序。
- 页面右键菜单:
- 合并选中页面并另存为
- 左旋90°
- 右旋90°
- 删除页面
- 旋转页面:选中页面后,右键菜单或工具栏选择“左旋90°”或“右旋90°”,支持批量旋转,旋转后缩略图自动刷新且保持选中状态。
- 删除页面:选中页面后,右键菜单或工具栏选择“删除页面”,支持批量删除,自动更新工作区和界面。
- 合并选中页面:选中页面后,右键菜单或工具栏选择“合并选中页面”,按当前顺序合并为新 PDF 并弹出保存对话框。
- 合并全部页面:工具栏“保存工作区”按钮,将当前所有页面按顺序合并为新 PDF 并弹出保存对话框。
- 合并实现说明:合并操作会根据页面原始 PDF 路径和页码,逐页插入到新 PDF,保证页面顺序和内容一致。