Word文档合并功能说明
功能概述
本功能实现了Word文档的合并处理,支持以下流程:
- 将上传的Word文档转换为PDF(保持格式一致)
- 将多个PDF合并为一个PDF
- 将合并后的PDF转换为Word或PDF输出
技术架构
后端处理流程
- Word转PDF: 使用mammoth库将Word文档转换为HTML,然后使用html-pdf-node将HTML转换为PDF
- PDF合并: 使用pdf-merger-js库合并多个PDF文档
- PDF转Word: 使用libreoffice-convert库进行格式转换(需要系统安装LibreOffice)
前端界面
- 基于React和TypeScript的现代化界面
- 支持拖拽上传和文件选择
- 实时显示处理进度和状态
- 支持PDF和Word两种输出格式选择
安装依赖
项目需要安装以下Node.js依赖:
npm install pdf-lib pdf-merger-js html-pdf-node libreoffice-convert
系统依赖
对于PDF转Word功能,需要安装LibreOffice:
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install libreoffice
CentOS/RHEL:
sudo yum install libreoffice
macOS:
brew install libreoffice
API接口
文档合并接口
- 路径:
POST /api/v1/documents/merge
- 认证: 需要Bearer token认证
- 参数:
files: Word文档文件数组(multipart/form-data)
outputFormat: 输出格式(pdf/docx),默认docx
preserveFormatting: 是否保持格式,默认true
响应格式
{
"success": true,
"message": "成功合并 3 个文档",
"fileName": "merged_document_2025-09-10T05-23-42Z.docx",
"fileSize": 10240,
"downloadUrl": "data:application/docx;base64,..."
}
使用流程
- 上传文档: 选择多个Word文档(.doc或.docx格式)
- 选择输出格式: 选择合并后的文件格式(PDF或Word)
- 开始合并: 点击合并按钮,系统会自动处理
- 下载结果: 处理完成后下载合并后的文档
处理流程说明
Word转PDF流程
- 使用mammoth解析Word文档内容
- 提取文本、图片和格式信息
- 生成HTML格式的中间文件
- 使用html-pdf-node将HTML转换为PDF
PDF合并流程
- 使用pdf-merger-js加载所有PDF文档
- 按顺序合并文档页面
- 保持原有的页面格式和布局
PDF转Word流程
- 使用libreoffice-convert调用系统LibreOffice
- 进行格式转换处理
- 生成Word文档
性能考虑
- 大文件处理建议使用分块上传
- 并发处理时注意内存使用
- 建议设置文件大小限制(默认10MB)
- 处理完成后自动清理临时文件
错误处理
- 文件格式验证失败返回400错误
- 处理过程中错误返回500错误
- 详细的错误日志记录在服务器端
安全考虑
- 文件类型严格验证(只允许.doc/.docx)
- 文件大小限制防止DoS攻击
- 临时文件及时清理
- 输入内容安全过滤
扩展功能
未来可以扩展的功能:
- 支持更多文档格式(如Excel、PowerPoint)
- 批量处理队列管理
- 异步处理支持
- 处理进度实时推送
- 云存储集成(如MinIO、AWS S3)