Skip to content

PatrickAlex2019/PDF-Editor

Repository files navigation

PDF 编辑器

一个用 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

二、交付到 Windows 10 电脑(重点)

你在 Mac 上开发,但软件要在 Windows 10 上用。关键限制:PyInstaller 不能跨平台打包 —— 在 Mac 上无法直接生成 Windows 的 .exe。下面三条路任选其一。

方案 A:在 Windows 10 上直接跑源码(最简单,推荐先用这个验证)

把整个 pdf-editor 文件夹拷到 Windows 10,然后:

  1. 安装 Python 3.12 或 3.13(官网勾选 "Add Python to PATH")
  2. 双击 setup.bat(自动建虚拟环境并安装依赖)
  3. 以后每次双击 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(本程序够用,体积更小)。

方案 B:在 Windows 10 上打包成独立 .exe(无需安装 Python 即可分发)

在那台 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 重新生成即可。

方案 C:不用 Windows 机器,用 GitHub Actions 在云端生成 .exe(从 Mac 操作)

仓库里已带 .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 页面,等待构建完成并下载 artifact

文字编辑说明

PDF 的"改字"本质是:涂白原文字 → 重新写入新文字。因此:

  • 新文字的字体/字距无法 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 全链路

About

桌面 PDF 编辑器:文字编辑/批注/签名/表单 + 缩略图 + 所见即所得文字(Python+PySide6+PyMuPDF)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors