一个面向 Windows 10/11 的离线桌面工具:批量粘贴姓名,统一设置字体、字号和颜色,实时预览折叠双面或平面单面席卡,然后直接打印或导出 .docx / .pptx。
- 批量姓名输入:支持逐行输入、Excel 多列粘贴时读取每行第一个非空单元格、空行过滤、重名保留和主动去重。
- 名单管理:编辑、删除、启用/停用、全选、取消全选、上下排序;长列表使用窗口化渲染。
- 姓名排版:字体、颜色、字号、最小字号、字重、字间距、水平对齐和最多两行。
- 长姓名适配:文本测量、二分查找缩小字号、两行拆分;达到最小字号仍放不下时给出警告。
- 页面设置:A4、A3、Letter、自定义尺寸,横向/纵向,四边边距,背景、边框、折叠线和安全区。
- 两种布局:默认 A4 横向折叠双面;上半区文字旋转 180°,下半区保持正向;另有平面单面模式。
- 统一排版引擎:预览、打印、SVG、Word 和 PowerPoint 共用毫米坐标场景,避免不同输出方式各算一套位置。
- 打印:独立打印 DOM、动态
@page、一人一页、隐藏编辑界面、保留背景色并避免尾部空白页。 - Word:真实 OOXML
.docx,一人一个 section;每页嵌入 SVG,并附 PNG fallback。 - PowerPoint:真实 OOXML
.pptx,一人一张自定义尺寸幻灯片,全幅 SVG 保真输出。 - Windows 系统字体:Rust 侧通过
fontdb枚举字体族;失败时自动使用内置中英文字体列表。 - 本地恢复:姓名、样式、页面设置和输出范围自动防抖保存;损坏或旧版本数据会安全回退。
- 任务保护:打印/导出互斥、按钮禁用、实际阶段进度、取消保存不报错、中文 Toast 提示。
- Tauri 最小权限:仅允许保存对话框和对用户选定文件的写入,不启用 shell 或远程网页。
- Tauri 2 + Rust
- React 19 + TypeScript strict + Vite
- Zustand
docx、PptxGenJS- Vitest、React Testing Library
src/
app/ 主界面和全局样式
components/ 三栏桌面组件、工具栏、状态栏、提示和进度
features/
names/ 姓名解析和数据类型
layout/ 纸张预设、自动适配、统一场景与排版引擎
preview/ SVG 屏幕预览
print/ 独立打印 DOM 和打印样式
export/ SVG/PNG、DOCX、PPTX 和文件保存
hooks/ Windows 字体调用
store/ Zustand 状态及本地持久化
tests/ 单元、组件和 OOXML 完整性测试
utils/ 单位换算、校验、文件名和错误处理
src-tauri/
src/fonts.rs 系统字体枚举命令
src/lib.rs Tauri 插件和命令注册
capabilities/default.json 最小权限
tauri.conf.json 窗口、CSP 和 Windows 打包配置
.github/workflows/
windows-build.yml Windows CI 和 NSIS/MSI 构建
安装:
- Node.js 22 LTS 或兼容版本。
- Rust stable(MSVC toolchain)。
- Visual Studio Build Tools,勾选“使用 C++ 的桌面开发”。
- WebView2 Runtime。Windows 10/11 机器通常已有;项目安装器配置为缺失时使用 bootstrapper。
npm ci
npm run tauri dev仅运行浏览器前端,便于 UI 开发:
npm run dev浏览器模式下 Word/PPT 会使用浏览器下载;Tauri 模式下使用 Windows 原生保存对话框。
npm run lint
npm run typecheck
npm run test
npm run format:check
npm run buildRust 环境中再运行:
cargo fmt --manifest-path src-tauri/Cargo.toml -- --check
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings
cargo test --manifest-path src-tauri/Cargo.tomlnpm run tauri build配置会同时尝试生成 NSIS 和 MSI。成功后通常位于:
src-tauri/target/release/bundle/nsis/
src-tauri/target/release/bundle/msi/
项目也提供 .github/workflows/windows-build.yml,可在 GitHub Actions 的 Windows runner 上执行完整检查并上传安装包。
首次在 Rust 可联网环境构建时,Cargo 会生成 src-tauri/Cargo.lock。建议把它提交到版本控制,以固定桌面端依赖解析结果。
- 在左侧粘贴姓名并点击“解析姓名”。
- 在名单中编辑、排序或取消勾选不需要输出的人员。
- 在右侧设置文字、页面和折叠方式。
- 在中间逐页核对实时预览。
- 顶部选择打印、导出 Word 或导出 PowerPoint。
- 输出范围可设为全部人员或仅已勾选人员。
所有几何尺寸在排版层统一使用毫米。场景节点只有文字、线和矩形,渲染器将同一场景转换为屏幕 SVG、打印 SVG、DOCX 页面或 PPTX 幻灯片。
Word 使用整页 SVG,并生成 PNG fallback。这样优先保证版式、旋转和颜色一致,而不是让 Word 内文字可直接编辑。PowerPoint 默认同样采用整页 SVG 高保真模式。
导出文件不会嵌入商业字体文件。目标电脑或打印电脑缺少所选字体时,Office 或系统可能进行字体替换;需要绝对固定视觉效果时,应使用常见字体,并以 PNG fallback/打印结果为准。
在 Windows 打印对话框中选择“实际大小”或 100%,关闭“适应页面”等二次缩放选项,并确认打印机支持当前纸张。
关闭正在 Word 或 PowerPoint 中打开的同名文件,再重新保存到该位置。
字体枚举失败时会启用内置列表,软件仍可工作。检查 Windows 字体目录权限,然后重启应用。
降低最小字号、减少页面边距、改用横向纸张,或允许两行。软件不会静默裁掉文字。
详见 BUILD_REPORT.md。当前交付环境已实际通过前端 TypeScript、lint、Vitest、生产构建和 OOXML 包结构测试;由于该环境没有 Rust/Cargo 且无法连接 Rust 包源,未在本机声称完成 Tauri Rust 编译或 Windows 安装包生成。Windows CI 已配置用于完成这些检查。
MIT,见 LICENSE。