Office Assistant 是一款基于 Avalonia UI 和 .NET 10 构建的跨平台 PDF 办公助手,专注于 PDF 文档的批量处理与日常办公需求。它使用 PdfSharpCore 进行 PDF 解析与合并,并内置 GhostScript 实现压缩与转图片,无需额外安装即可开箱即用。
设计理念:
- 专注 PDF 办公 — 围绕合并 / 拆分 / 压缩 / 替换 / 删除 / 插入 / 转图片 / 图片转 PDF 八个核心场景打磨
- 简单可依赖 — 直观的中文 UI、清晰的进度反馈、稳定的批量处理
- 跨平台原生体验 — 真正的桌面应用,而不是 Web 套壳;Windows / Linux / macOS 同源
- 可扩展架构 — MVVM 模式 + Avalonia,新功能模块化添加
- PDF 批量合并 — 拖入或选择多个 PDF,按列表顺序合并为一个文件
- PDF 批量拆分 — 支持"每页一个"与"按页码范围"两种拆分模式(如
1-3,5,7-9) - PDF 批量压缩 — 内置 GhostScript,提供低 / 中 / 高三档预设与自定义等级(1-100)
- PDF 批量替换 — 源文件 / 替换文件成对替换,可指定页码
- PDF 批量删除 — 按页码范围删除指定页面
- PDF 批量插入 — 将外部 PDF 页面插入到源 PDF 指定位置
- PDF 转图片 — 基于 GhostScript,支持自定义页码范围与分辨率(72-1200 DPI)
- 图片转 PDF — 多张图片一键合并为 PDF,支持页面大小 / 横纵向 / 边距 / 排序
- 拖放友好 — 文件列表支持拖入、按住拖动重排、上下移动按钮
- 批量处理进度 — 实时显示进度条、处理耗时与状态消息
- 智能输出路径 — 默认与源文件同目录,自动避开重名(
xxx.pdf→xxx1.pdf…) - OCR 集成 — 另含 OCR 文字识别功能(占位入口,详见导航栏图标)
| 层级 | 技术 | 版本 |
|---|---|---|
| 桌面框架 | Avalonia UI | 11.2.7 |
| 运行时 | .NET | 10.0 |
| 编程语言 | C# | 12.0 |
| PDF 解析与合并 | PdfSharpCore | 1.3.67 |
| PDF 压缩 / 转图片 | GhostScript | 10.05.1(已内置) |
| 架构模式 | MVVM(INotifyPropertyChanged + SetField) |
— |
| 数据网格 | Avalonia.Controls.DataGrid |
— |
| 主题 | FluentTheme | — |
| 安装包 | Inno Setup | — |
- .NET 10.0 SDK
- 任意支持 .NET 的 IDE(Visual Studio / Rider / VS Code)
- Windows 用户:已自带 GhostScript;Linux / macOS 用户可执行
sudo apt install ghostscript或brew install ghostscript
git clone https://github.com/yaoleistable/OfficeAssistant.git
cd OfficeAssistant
# 构建(Debug)
dotnet build "OfficeAssistant/OfficeAssistant.csproj" -c Debug
# 构建(Release)
dotnet build "OfficeAssistant/OfficeAssistant.csproj" -c Release
# 开发模式运行
dotnet run --project "OfficeAssistant/OfficeAssistant.csproj"# 发布 Windows 版本(不含 .NET 运行时,需用户自行安装)
dotnet publish -c Release -r win-x64 --no-self-contained
# 发布为单文件可执行(不含运行时)
dotnet publish -r win-x64 -c Release --self-contained false /p:PublishSingleFile=true
# Native AOT(实验性)
dotnet publish -r win-x64 -c Release -p:PublishAot=true- PDF 合并 — 选多个 PDF → 点击"开始合并" → 选保存位置
- PDF 压缩 — 选 PDF → 选择压缩等级(低 / 中 / 高 / 自定义)→ 可选输出目录 → "开始压缩"
- PDF 拆分 — 选 PDF → 选择拆分模式(每页一个 / 按范围)→ 可选输出目录 → "开始拆分"
- PDF 替换 — 选择源文件与替换文件(数量必须一致)→ 输入要替换的页码 → "开始替换"
- PDF 删除 — 选 PDF → 输入要删除的页码范围 → "开始删除"
- PDF 插入 — 选择源文件与待插入文件 → 输入插入位置 → "开始插入"
- PDF 转图片 — 选 PDF → 可选页码范围 / 分辨率 → "开始转换"(图片自动保存到
<PDF名>_Png子文件夹) - 图片转 PDF — 拖入或选择多张图片(JPG / PNG / BMP / GIF / TGA)→ 调整顺序、页面设置 → "开始转换"
- OCR 文字识别 — 占位入口,详见应用内说明
OfficeAssistant/ # 项目根目录
├── OfficeAssistant/ # 主项目(应用代码)
│ ├── OfficeAssistant.csproj # csproj:net10.0, win-x64
│ ├── Program.cs # 程序入口
│ ├── App.axaml(.cs) # 应用定义与全局初始化
│ ├── MainWindow.axaml(.cs) # 主窗口:左侧图标栏 + 功能导航 + 内容区
│ ├── Views/ # 视图(XAML + code-behind)
│ │ └── PDF/ # 各功能 UserControl
│ ├── ViewModels/ # 视图模型
│ │ └── PDF/ # 各功能 ViewModel
│ ├── Converters/ # XAML 值转换器
│ ├── Helpers/ # 业务帮助类(GhostscriptHelper 等)
│ └── Resources/ # 图标与图片资源
├── docs/ # 文档与变更日志
│ ├── ChangeLogs.md # 版本变更
│ ├── 开发说明.md # 框架与命令速查
│ ├── 常见错误.md # 错误排查与最佳实践
│ ├── 功能需求.md # 历史需求与待办
│ └── Reference/ghostscript/ # 内置 GhostScript
├── scripts/ # 打包脚本
├── .github/workflows/ # CI:自动构建 / 发布
├── CLAUDE.md # AI 协作指引
└── OfficeAssistant.iss # Inno Setup 安装包脚本
| 文档 | 说明 |
|---|---|
| docs/ChangeLogs.md | 版本变更日志(Keep a Changelog 风格) |
| docs/开发说明.md | 框架与命令速查 |
| docs/常见错误.md | 错误排查与最佳实践 |
| docs/功能需求.md | 历史需求与待办 |
| CLAUDE.md | 给 Claude / AI 协作的项目级指引 |
| docs/README-en.md | English (machine translation) |
- Windows 10/11、macOS 12+、Linux(任意主流发行版)
- .NET 10.0 桌面运行时:下载
- GhostScript
- Windows:10.05.1(已内置在安装包中,无需额外安装)
- macOS:
brew install ghostscript - Linux:
sudo apt install ghostscript
本项目的构建得益于以下优秀开源项目:
- Avalonia UI — 跨平台 .NET 桌面 UI 框架
- PdfSharpCore — .NET Core 版本的 PdfSharp
- GhostScript — 高质量的 PDF 解释器
- Inno Setup — Windows 安装包制作工具
- 欢迎关注公众号"可持续学园",回复"OfficeAssistant"获取最新软件下载地址。

