一个用 Python + PySide6 + PyMuPDF 编写的桌面 PDF 编辑器,跨平台(Windows / macOS / Linux)。
- 所见即所得文字:文字框可在画布上拖拽定位、原地输入,屏幕显示≈最终效果;点「✓ 应用文字」或切换工具即写入
- 文字编辑:点击页面上已有文字 → 原位弹出可编辑框(白底遮住原文)→ 改完应用,支持中文
- 批注标记:高亮、下划线、删除线、矩形框、自由画笔、便签
- 图片 / 签名:插入图片、手写签名板(透明底)
- 表单:点击表单字段填写(文本框 / 复选框 / 下拉)
- 缩略图侧栏:左侧实时缩略图,点击跳转页面
- 页面管理:旋转、删除、插入空白页、调整顺序、合并其它 PDF
- 撤销 / 重做、保存 / 另存为、导出当前页为图片
- 自带程序图标(
assets/icon.ico,Windows 打包后显示在 exe 与窗口)
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python main.py你在 Mac 上开发,但软件要在 Windows 10 上用。关键限制:PyInstaller 不能跨平台打包 ——
在 Mac 上无法直接生成 Windows 的 .exe。下面三条路任选其一。
把整个 pdf-editor 文件夹拷到 Windows 10,然后:
- 安装 Python 3.12 或 3.13(官网勾选 "Add Python to PATH")
- 双击
setup.bat(自动建虚拟环境并安装依赖) - 以后每次双击
run.bat即可启动
不建议用 Python 3.14:部分库的 Windows 预编译包可能还没跟上。3.12/3.13 最稳。
下载慢/卡住? PySide6 约 110MB,默认源在国内常常很慢。用清华镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
setup.bat已内置:卡住时可改用镜像那一行。也可只装PySide6-Essentials(本程序够用,体积更小)。
在那台 Windows(或任意一台 Windows)上:
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt pyinstaller
pyinstaller build_windows.spec REM 文件夹版(启动快)
REM 或者打成单个文件:
pyinstaller build_windows_onefile.spec REM 单文件版 dist\PDF编辑器.exe(分发方便,首启稍慢)- 文件夹版:
dist\PDF编辑器\整个文件夹是绿色版,拷给别人双击里面的PDF编辑器.exe。 - 单文件版:只有一个
dist\PDF编辑器.exe,拷一个文件即可。
两种都已带好程序图标,目标机器无需安装 Python。
图标文件
assets/icon.ico已随仓库提供;如想改图标,编辑并重跑python scripts/make_icon.py重新生成即可。
仓库里已带 .github/workflows/build-windows.yml。把代码推到 GitHub 后,
Actions 会用 Windows 云主机自动打包,在 Run 的 Artifacts 里下载到 .exe 压缩包。
这样你全程在 Mac 上,也能拿到 Windows 可执行文件。
git init && git add . && git commit -m "init"
# 在 GitHub 新建仓库后:
git remote add origin <你的仓库地址>
git push -u origin main
# 然后到 GitHub 仓库的 Actions 页面,等待构建完成并下载 artifactPDF 的"改字"本质是:涂白原文字 → 重新写入新文字。因此:
- 新文字的字体/字距无法 100% 复刻原文(这是所有 PDF 编辑器的通病)
- 含中文时程序会自动用内置中文字体;也可在编辑框里手动选字体
- 复杂排版处建议改完后检查一下效果
pdf-editor/
├── main.py 入口(加载图标 + 启动窗口)
├── requirements.txt
├── build_windows.spec PyInstaller 文件夹版配置(在 Windows 上用)
├── build_windows_onefile.spec PyInstaller 单文件版配置
├── setup.bat / run.bat Windows 一键安装 / 启动
├── assets/ icon.png / icon.ico 程序图标
├── docs/screenshot.png 界面截图
├── scripts/
│ ├── make_icon.py 生成图标
│ └── screenshot.py 离屏抓取界面截图
├── tests/
│ ├── smoke_test.py 文档核心逻辑测试
│ └── gui_test.py GUI 全链路集成测试
├── .github/workflows/ 云端打包 Windows exe
└── app/
├── document.py PDF 模型(PyMuPDF 封装 + 撤销重做)
├── canvas.py 画布、鼠标交互、所见即所得文字框
├── dialogs.py 各类对话框(签名 / 便签 / 表单)
└── main_window.py 主窗口、工具栏、缩略图侧栏
QT_QPA_PLATFORM=offscreen python tests/smoke_test.py # 文档核心逻辑
QT_QPA_PLATFORM=offscreen python tests/gui_test.py # GUI 全链路