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