90 lines
2.1 KiB
Markdown
90 lines
2.1 KiB
Markdown
|
|
## doc_convert 模块
|
|||
|
|
|
|||
|
|
独立文档转换服务,用于消费 MQ 任务,将 Word 转为分页 HTML、上传 OSS,并生成 ZIP 包供前端下载。
|
|||
|
|
|
|||
|
|
### 功能概览
|
|||
|
|
- MQ 消费任务(长耗时任务容器)
|
|||
|
|
- Word -> HTML(按页切分)
|
|||
|
|
- HTML 与资源上传 OSS
|
|||
|
|
- 打包 ZIP 上传 OSS
|
|||
|
|
- 回写结果消息(MQ callback)
|
|||
|
|
- 幂等/去重/版本过期处理(Redis)
|
|||
|
|
|
|||
|
|
### 依赖准备
|
|||
|
|
- 将 `aspose-words-23.1.jar` 放入 `api/doc_convert/lib/` 并确保合法授权
|
|||
|
|
- 配置 Redis(用于 OSS 配置和幂等/去重)
|
|||
|
|
- 配置 RabbitMQ
|
|||
|
|
|
|||
|
|
### 任务消息示例(JSON)
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"taskId": "t-10001",
|
|||
|
|
"docId": "doc-888",
|
|||
|
|
"version": 3,
|
|||
|
|
"ossKey": "upload/documents/xxx.docx",
|
|||
|
|
"ossConfigKey": "default",
|
|||
|
|
"fileHash": "sha256...",
|
|||
|
|
"splitPages": 10,
|
|||
|
|
"options": {
|
|||
|
|
"splitPages": 10,
|
|||
|
|
"embedImages": false,
|
|||
|
|
"extractImages": true,
|
|||
|
|
"cssInline": true,
|
|||
|
|
"outputPrefix": "doc_convert"
|
|||
|
|
},
|
|||
|
|
"callback": {
|
|||
|
|
"exchange": "doc_convert.result.exchange",
|
|||
|
|
"routingKey": "doc_convert.result"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 结果消息示例(JSON)
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"taskId": "t-10001",
|
|||
|
|
"docId": "doc-888",
|
|||
|
|
"version": 3,
|
|||
|
|
"status": "ready",
|
|||
|
|
"message": "ok",
|
|||
|
|
"pageCount": 42,
|
|||
|
|
"splitPages": 10,
|
|||
|
|
"zipUrl": "https://oss.xxx/doc_convert/doc-888/3/zip/doc-888_3.zip",
|
|||
|
|
"manifestUrl": "https://oss.xxx/doc_convert/doc-888/3/manifest.json",
|
|||
|
|
"parts": [
|
|||
|
|
{
|
|||
|
|
"startPage": 1,
|
|||
|
|
"endPage": 10,
|
|||
|
|
"htmlKey": "doc_convert/doc-888/3/parts/part_1-10.html",
|
|||
|
|
"htmlUrl": "https://oss.xxx/doc_convert/doc-888/3/parts/part_1-10.html",
|
|||
|
|
"assetsPrefix": "doc_convert/doc-888/3/assets/part_1-10"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 打包说明
|
|||
|
|
ZIP 包结构示例:
|
|||
|
|
```
|
|||
|
|
manifest.json
|
|||
|
|
parts/
|
|||
|
|
part_1-10.html
|
|||
|
|
part_1-10.css
|
|||
|
|
assets/
|
|||
|
|
part_1-10/
|
|||
|
|
image1.png
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 配置
|
|||
|
|
参考 `api/doc_convert/src/main/resources/application-*.yml`。
|
|||
|
|
|
|||
|
|
- `doc-convert.default-split-pages`:默认每份 HTML 页数
|
|||
|
|
- `doc-convert.output-prefix`:OSS 输出前缀
|
|||
|
|
- `doc-convert.task-ttl-hours`:幂等任务缓存 TTL
|
|||
|
|
- `doc-convert.hash-ttl-days`:文件 Hash 去重 TTL
|
|||
|
|
|
|||
|
|
### 运行
|
|||
|
|
```bash
|
|||
|
|
mvn -pl doc_convert -am clean package -P dev
|
|||
|
|
```
|