把 Word 97-2003 二进制文档(.doc)转换为 OOXML(.docx),
Buffer 进、Buffer 出,仅限 Node.js 环境,源自 JitWord 协同文档 .doc 导入链路
npm install @jitword/doc2docx
专为服务端文档处理场景打造,兼顾性能、还原度与易用性
现代 JS 生态的 docx 解析库一律只认 .docx,本包负责把 [MS-DOC] 二进制转成标准 OOXML,产出可交给任意 docx 处理器
已用于 JitWord 的 .doc 导入链路,日常处理公文、合同等真实文档,段落、字体、表格、内联图片正常还原
自包含原生可执行文件按平台拆成 optionalDependencies,npm 只下载匹配当前机器的一份(约 34MB),目标机无需额外运行时
异步 API 只有 convertDocToDocx 一个入口,输入本就是 .docx 时原样透传,非 Word 文档或加密文件抛出可操作错误
Buffer 进、Buffer 出,几行代码完成 .doc → .docx 转换
npm i @jitword/doc2docx
原生二进制按平台拆成 optionalDependencies,npm 只会下载匹配当前机器的那一份(约 34MB),不会为用不到的架构浪费带宽。
const fs = require('node:fs')
const { convertDocToDocx } = require('@jitword/doc2docx')
const docx = await convertDocToDocx(fs.readFileSync('合同.doc'))
fs.writeFileSync('合同.docx', docx.buffer)
进 Buffer、出 Buffer,没有别的概念。产出是标准 .docx,交给任意 docx 解析器或编辑器继续处理即可。
convertDocToDocx(
input: Buffer | Uint8Array | ArrayBuffer,
options?: { timeoutMs?: number },
): Promise<{ buffer: Buffer; durationMs: number; passthrough: boolean }>
passthrough: true —— 输入本来就是 .docx(扩展名写错是很常见的情形)时原样返回。
durationMs —— 本次转换耗时,便于打点与性能监控。
options.timeoutMs —— 可选超时时间,避免异常文档阻塞主流程。
| 平台 | 可选依赖包 |
|---|---|
| linux-x64 | @jitword/doc2docx-linux-x64 |
| linux-arm64 | @jitword/doc2docx-linux-arm64 |
| win32-x64 | @jitword/doc2docx-win32-x64 |
| darwin-arm64(Apple Silicon) | @jitword/doc2docx-darwin-arm64 |
| darwin-x64(Intel Mac) | @jitword/doc2docx-darwin-x64 |
其它平台可自行构建后用环境变量 DOC2DOCX_PATH 指向可执行文件。内部调用原生二进制,无法在浏览器中运行。
覆盖各类服务端文档处理与办公系统场景
历史存量 .doc 文档批量转换为标准 docx 格式,统一文档标准,便于在线协作与管理
OA、CRM、知识管理系统后端集成,自动处理用户上传文档,提升系统兼容性
内网、涉密环境服务端本地转换,文件不出域,满足金融、政务等强合规需求
doc2docx 基于 BSD-3-Clause 协议开源,由 JitWord 协同办公团队持续维护, 欢迎提交 Issue、PR 一起完善项目
来自 JitWord 即时文档团队