From 48d40db24657035b154bcb36b22557b98066e84d Mon Sep 17 00:00:00 2001 From: 10654 <1065437051@qq.com> Date: Wed, 22 Jul 2026 16:16:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20doc2docx=20=E5=B7=A5?= =?UTF-8?q?=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1.0.0/zlb-doc\350\275\254docx (1).tool" | Bin 0 -> 4157 bytes tools/tool_doc2docx/README.md | 100 ++++++++++++++++++ tools/tool_doc2docx/data.yaml | 5 + 3 files changed, 105 insertions(+) create mode 100644 "tools/tool_doc2docx/1.0.0/zlb-doc\350\275\254docx (1).tool" create mode 100644 tools/tool_doc2docx/README.md create mode 100644 tools/tool_doc2docx/data.yaml diff --git "a/tools/tool_doc2docx/1.0.0/zlb-doc\350\275\254docx (1).tool" "b/tools/tool_doc2docx/1.0.0/zlb-doc\350\275\254docx (1).tool" new file mode 100644 index 0000000000000000000000000000000000000000..68bc67a43ef54510aea7a8621cb44f297182420b GIT binary patch literal 4157 zcmbVP+i%;}8PB@(GN)VfR1Cu&&X@s`5Q&oLi)kaihnY>5lU#xAKLP~>66nj$&! zFt%eDu!pvD5@t(KcEyG?O_ruzhb?u1B5-V{d))i}g8`=OJmp{5_nkxP;@Md-KIn4z zeZTL1IV(rsSB@XyPxvZx9Ltw|>Y1u#UZ$Qe<4F|0JPltHw$D^sqtSa&ZZ%qtvf)wj z_N7K(TFkWlC_Jj08Uq4+`<$sq;SWpYF=J$uHVQ+!q82I*yo{@ z>ClstHIh&W(~uxB4HPFeVn|D=8M5ay&vdhyVkWm-R9&;^_`avynb)Z5QI9NfcPwX?yE0FZcpd$Z&Up8o_`xIL`kjrwoy(STU6J^bE7~DP5g9xNWjUe!vPMi8OuY>>HC)r>A~dFDs?`*@<&A(`TgofedWXrH8U~IC_HMdZx{?hSdK1z4+E& zM1oey655ZRSSGS8OFbTB-lC`=R1+VM`Y!07)~M_{KFfB~DNmC0s3qT`So|6fMV_Gf zHT-~rF<^R)#;SfYD6iO`c+BP2`t7H0*<$Q$If=Wjs*As zUNLy&#xpbF!6GhYaP>@h&o^PfxAZ5eIGXSW>3I zbg)?D?iCHyM^1K64wR%@*mgkA!>X6Zlq<2^t=&{l{PrjdJey2=0rW9LI@M$?tL~{b z6!$nerIMycjar6eh+}I|4s*54TS3dsz9}sU*~@QAxy*Psbxsvk0*u98oPNoP#2>4c z&qa##i$DHi@5}q-!qWbrFV8||@AK-+2G`fGgiaeU*tXp%{a@x&0J1|Y!!e~|$w zdNoZcpP}jQ_GY|(Q{c}`{j6huStjkZ zezjPndQfPo3v&%cHcX~ymJ{f*W*1exW!fVAMqs7Mnj-Yh8A$b>ga_05%Zy9zn>jPn zKbf4G_|@s@iOF-&#=FBl>2rNO3-iaZeRO!IXQ9_qr4DFVy^Sd?n4~8mQeR*C!2x|K z$qz#k4ixzfNhca?cK7PT_R8w+oz*0}_hT;Sx>dtNnyek%0%44t9C6?Lk80Sb&7mcr zKnmP>)V}^e1bp|4t@!q}Co5Ol*FF=2y8XNR@$c_(ks$sO^%%_g8ae0KlpkWfKqeou zpY-;=UiPd6SzTZbu89j$o=AL|ff0nBr`EGU7oLf_fUvG^a8&$G%H;$Z1Y56sx_37e zwhH^6Zm-3k{HA^T){|Q+d!MX6-M*5V)zP`(}1p4ir3P=&(lRz(+hwJRf!}Xnry@vT_buBea3UjUCsa zzW98dDiD<7GhK3$yj{ByU;QYpza+C#atfoU8`bo*Q!@ggQ^Be8WE@Brs<4sF{$FFs zkOc6d#W*CxNWu$APxti$4KFwG(QK6EH$nu8!k5w!2KP2h$|!tZ^*nVk3SSVLYZQJ9wgu`@yibP5OuvrJ*7T?z ztpxzod^H^C_UWkkU0{TZhJ7(=elL7M3w-9ZqUQJ40vf(z+U7o0!smSrc5o2#^U0~7 zo`2)?>u2CM2vId=UZT-j_+kK;Tv(q$zaZdWGcyxEN^iE|H(}|Gt{xxTXnZjK&(-zy z#ee;Kboirh_>J%wqb=7`8SdWEx$tFJ=I4A@<-54J?KVbqMJbF_#>$0?W(*cahf7Lf zlvYL*rDUkepaQBGjs;s2myZ|Zufu{@ZQeb=hp*3^pPoDmPPNnqwLpzy8r*$AC#<|E zgw0nODU>RO^2l_#TrCe(2ghU(qYRIoER9x6CGdFQ!h(As!%%f-tXfj!;gNDhsU!@+ XJJD1Wz6ed+hy5uEpSz?)K|}rzuqcaK literal 0 HcmV?d00001 diff --git a/tools/tool_doc2docx/README.md b/tools/tool_doc2docx/README.md new file mode 100644 index 0000000..3b9250a --- /dev/null +++ b/tools/tool_doc2docx/README.md @@ -0,0 +1,100 @@ +# Word 文档转 DOCX 工具 + +## 工具介绍 + +`zlb-doc转docx` 用于将 MaxKB 中引用的 Word 97-2003 文档(`.doc`)转换为 Office Open XML 文档(`.docx`),并将转换结果上传至 MaxKB 临时对象存储。工具最终返回可在 MaxKB 页面中打开或下载的文件链接。 + +该工具适用于需要将旧版 Word 文档统一转换为 `.docx` 后,再交由智能体、知识库工作流或其他业务流程继续处理的场景。 + +## 功能 + +- 接收 MaxKB 文件引用列表中的首个文档。 +- 根据文件引用地址下载源文件。 +- 将 `.doc` 文件调用转换服务转换为 `.docx` 文件。 +- `.docx` 文件无需转换,直接上传。 +- 将结果上传为有效期 120 分钟的 MaxKB 临时文件。 +- 返回带有文件名的 HTML 跳转链接,供页面展示和下载。 + +## 使用说明 + +1. 在 MaxKB 工作流或智能体编排中添加该自定义工具。 +2. 将上游文件上传节点或文件选择节点的输出映射到 `doc_list`。 +3. 为 `auth_token` 配置当前 MaxKB 环境可用的认证令牌。 +4. 执行工具后,在输出中获取 `.docx` 文件链接,并将其传给后续节点或直接展示给用户。 + +## 参数说明 + +### 输入参数 + +| 参数名 | 类型 | 必填 | 来源 | 说明 | +| --- | --- | --- | --- | --- | +| `doc_list` | `array` | 是 | `reference` | MaxKB 文件引用列表。工具仅处理列表中的第一个文件对象。 | +| `auth_token` | `string` | 是 | `custom` | 当前 MaxKB 环境的认证令牌,用于下载源文件并上传转换结果。 | + +#### `doc_list` 文件对象 + +| 字段名 | 类型 | 必填 | 说明 | +| --- | --- | --- | --- | +| `name` | `string` | 是 | 源文件名称,例如 `合同模板.doc`。支持 `.doc` 或 `.docx` 文件。 | +| `url` | `string` | 是 | MaxKB 返回的文件相对地址,例如 `./api/oss/file/xxxx`。 | + +### 输出参数 + +| 输出类型 | 说明 | +| --- | --- | +| `string` | 成功时返回 MaxKB 可识别的 HTML 渲染片段,其中包含 `.docx` 文件链接;失败时返回描述下载、转换或上传失败原因的错误字符串。 | + +成功结果示例: + +```html +合同模板.docx +``` + +## 调用方法 + +工具入口函数为 `process_documents(doc_list, auth_token)`。 + +1. 工具从 `doc_list` 取得第一个文件的 `name` 和 `url`。 +2. 使用 `auth_token` 下载源文件。 +3. 当输入为 `.doc` 时,调用 `doc-to-docx` 转换接口;输入为 `.docx` 时跳过转换。 +4. 将最终的 `.docx` 文件上传到 MaxKB 临时对象存储。 +5. 返回跳转至上传文件的 HTML 链接。 + +## 调用示例 + +### MaxKB 节点输入 + +```json +{ + "doc_list": [ + { + "name": "合同模板.doc", + "url": "./api/oss/file/temporary/contract-template.doc" + } + ], + "auth_token": "" +} +``` + +### Python 调用 + +```python +result = process_documents( + doc_list=[ + { + "name": "合同模板.doc", + "url": "./api/oss/file/temporary/contract-template.doc" + } + ], + auth_token="" +) +``` + +## 注意事项 + +- 工具仅处理 `doc_list` 中的第一个文件;批量转换应在工作流中逐个调用。 +- 源文件应为可正常下载的 `.doc` 或 `.docx` 文件,且文件引用 URL 不可为空。 +- 转换服务地址、MaxKB 基础地址和认证令牌需与实际部署环境保持一致。 +- 上传结果使用 `TEMPORARY_120_MINUTE` 临时存储策略,链接有效期为 120 分钟;需要长期保存时,应改用持久化存储策略。 +- 请勿在工具代码、README 或工作流配置中明文提交有效的认证令牌。 +- 本文档未引用图片或 GIF。后续如添加图片或 GIF,必须使用 OSS、网盘或其他公网可访问地址,避免使用本地文件路径。 diff --git a/tools/tool_doc2docx/data.yaml b/tools/tool_doc2docx/data.yaml new file mode 100644 index 0000000..52f0eb2 --- /dev/null +++ b/tools/tool_doc2docx/data.yaml @@ -0,0 +1,5 @@ +name: Word文档转DOCX工具 +tags: + - AI工具 +title: 将 DOC 文档转换为 DOCX 并返回下载链接。 +description: 用于将 MaxKB 中引用的 DOC 文档转换为 DOCX 格式,上传至临时对象存储后返回可下载链接的工具。