2.1 KiB
2.1 KiB
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)
{
"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)
{
"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:幂等任务缓存 TTLdoc-convert.hash-ttl-days:文件 Hash 去重 TTL
运行
mvn -pl doc_convert -am clean package -P dev