# OfficeAssistant
**Repository Path**: tabortao/OfficeAssistant
## Basic Information
- **Project Name**: OfficeAssistant
- **Description**: 一个基于 Avalonia UI 开发的跨平台办公助手工具,实现PDF批量合并、PDF批量拆分、PDF批量替换等功能。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://gitee.com/tabortao/OfficeAssistant
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2025-04-23
- **Last Updated**: 2026-07-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

# Office Assistant
**基于 Avalonia UI 的跨平台 PDF 办公助手 — 批量合并 / 拆分 / 压缩 / 替换 / 转图片 / 图片转 PDF,开箱即用**
[](https://github.com/tabortao/OfficeAssistant/releases)
[](https://github.com/tabortao/OfficeAssistant/stargazers)
[](https://github.com/tabortao/OfficeAssistant/network)
[](https://github.com/tabortao/OfficeAssistant/blob/main/LICENSE)
[](https://dotnet.microsoft.com/)
[](https://avaloniaui.net/)
[](https://learn.microsoft.com/dotnet/csharp/)
[]()
[]()
[](https://gitee.com/tabortao/OfficeAssistant)
[](https://github.com/tabortao/OfficeAssistant)
[**English (machine translation)**](./docs/README-en.md)

## 概述
**Office Assistant** 是一款基于 **Avalonia UI** 和 **.NET 10** 构建的跨平台 PDF 办公助手,专注于 PDF 文档的批量处理与日常办公需求。它使用 **PdfSharpCore** 进行 PDF 解析与合并,并内置 **GhostScript** 实现压缩与转图片,无需额外安装即可开箱即用。
设计理念:
- **专注 PDF 办公** — 围绕合并 / 拆分 / 压缩 / 替换 / 删除 / 插入 / 转图片 / 图片转 PDF 八个核心场景打磨
- **简单可依赖** — 直观的中文 UI、清晰的进度反馈、稳定的批量处理
- **跨平台原生体验** — 真正的桌面应用,而不是 Web 套壳;Windows / Linux / macOS 同源
- **可扩展架构** — MVVM 模式 + Avalonia,新功能模块化添加
## 功能亮点
### 核心 PDF 处理
- **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](https://avaloniaui.net/) | 11.2.7 |
| 运行时 | [.NET](https://dotnet.microsoft.com/) | 10.0 |
| 编程语言 | [C#](https://learn.microsoft.com/dotnet/csharp/) | 12.0 |
| PDF 解析与合并 | [PdfSharpCore](https://github.com/ststeiger/PdfSharpCore) | 1.3.67 |
| PDF 压缩 / 转图片 | [GhostScript](https://www.ghostscript.com/) | 10.05.1(已内置) |
| 架构模式 | MVVM(`INotifyPropertyChanged` + `SetField`) | — |
| 数据网格 | `Avalonia.Controls.DataGrid` | — |
| 主题 | FluentTheme | — |
| 安装包 | Inno Setup | — |
## 快速开始
### 环境要求
- [.NET 10.0 SDK](https://dotnet.microsoft.com/zh-cn/download/dotnet/10.0)
- 任意支持 .NET 的 IDE(Visual Studio / Rider / VS Code)
- Windows 用户:已自带 GhostScript;Linux / macOS 用户可执行 `sudo apt install ghostscript` 或 `brew install ghostscript`
### 克隆与构建
```bash
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"
```
### 发布
```powershell
# 发布 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
```
## 使用说明(按导航栏顺序)
1. **PDF 合并** — 选多个 PDF → 点击"开始合并" → 选保存位置
2. **PDF 压缩** — 选 PDF → 选择压缩等级(低 / 中 / 高 / 自定义)→ 可选输出目录 → "开始压缩"
3. **PDF 拆分** — 选 PDF → 选择拆分模式(每页一个 / 按范围)→ 可选输出目录 → "开始拆分"
4. **PDF 替换** — 选择源文件与替换文件(数量必须一致)→ 输入要替换的页码 → "开始替换"
5. **PDF 删除** — 选 PDF → 输入要删除的页码范围 → "开始删除"
6. **PDF 插入** — 选择源文件与待插入文件 → 输入插入位置 → "开始插入"
7. **PDF 转图片** — 选 PDF → 可选页码范围 / 分辨率 → "开始转换"(图片自动保存到 `_Png` 子文件夹)
8. **图片转 PDF** — 拖入或选择多张图片(JPG / PNG / BMP / GIF / TGA)→ 调整顺序、页面设置 → "开始转换"
9. **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](./docs/ChangeLogs.md) | 版本变更日志([Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/) 风格) |
| [docs/开发说明.md](./docs/开发说明.md) | 框架与命令速查 |
| [docs/常见错误.md](./docs/常见错误.md) | 错误排查与最佳实践 |
| [docs/功能需求.md](./docs/功能需求.md) | 历史需求与待办 |
| [CLAUDE.md](./CLAUDE.md) | 给 Claude / AI 协作的项目级指引 |
| [docs/README-en.md](./docs/README-en.md) | English (machine translation) |
## 运行环境要求
- Windows 10/11、macOS 12+、Linux(任意主流发行版)
- .NET 10.0 桌面运行时:[下载](https://dotnet.microsoft.com/zh-cn/download/dotnet/10.0)
- GhostScript
- Windows:10.05.1(**已内置在安装包中**,无需额外安装)
- macOS:`brew install ghostscript`
- Linux:`sudo apt install ghostscript`
## 许可证
[MIT License](./LICENSE)
## 鸣谢
本项目的构建得益于以下优秀开源项目:
- [Avalonia UI](https://avaloniaui.net/) — 跨平台 .NET 桌面 UI 框架
- [PdfSharpCore](https://github.com/ststeiger/PdfSharpCore) — .NET Core 版本的 PdfSharp
- [GhostScript](https://www.ghostscript.com/) — 高质量的 PDF 解释器
- [Inno Setup](https://jrsoftware.org/isinfo.php) — Windows 安装包制作工具
## 软件下载
- 欢迎关注公众号"**可持续学园**",回复"**OfficeAssistant**"获取最新软件下载地址。
