@betteroffice/docx-react

中文文档
0.5.1发布于 2026/10/27Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 8.5万

Word-fusional React DOCX编辑和取景器:全OOXML忠心,实时人类+AI代理合作.

中文使用文档
文档目录15 节
  1. 安装
  2. 使用量
  3. 关键选项
  4. 编辑器参考
  5. 主机保存
  6. 装入和无障碍
  7. 主机搜索
  8. 主办提案
  9. 工具栏和插件
  10. 编辑批次和段落锁定
  11. 结构化的出口和内容管制
  12. 协作
  13. 字体和本地化
  14. 记忆和恢复
  15. 文档

@ betteroffice/ docx 反应

使用工具栏对 DOCX 编辑器和取景器进行反演,平面画布,评论,并跟踪更改. 引擎默认在一个Web Worker中运行;文档读取,编辑,并输出回还承诺.

安装

bun add @betteroffice/docx-react react react-dom

同伴依赖性 : react 财务报告和审定财务报表 react-dom 18或19号.

使用量

import { DocxEditor } from '@betteroffice/docx-react';
import '@betteroffice/docx-react/styles.css';

export function Editor({ file }: { file: File }) {
  return <DocxEditor documentBuffer={file} />;
}

在应用程序条目、页面或版式级别上导入样式表一次。 仅使用浏览器 组件与服务器渲染集成时。 见 托管 用于工人,块和CSP需求.

关键选项

下面所有道具都是可选的. 关闭文档源以显示占位符 .

道具类型说明
documentBufferArrayBuffer | Uint8Array | Blob | File | nullDOCX 源字节.
fileArrayBuffer | Uint8Array | Blob | File | null别名 documentBuffer,在两者都设定时获胜.
fileNamestring别名 documentName,在两者都设定时获胜.
documentDocument | null解析模型从 @betteroffice/docx,作为替代来源.
mode'editing' | 'suggesting' | 'viewing'直接编辑、跟踪更改或查看;默认为 'editing'。 。 。 .
readOnlyboolean禁用编辑并隐藏默认工具栏和标尺 .
authorstring评论和跟踪更改的作者.
onSave(buffer: ArrayBuffer) => void接收导出 DOCX 字节 .
onSaveRequest() => boolean | void | Promise<boolean | void>拥有UI在串行化前所保存的工作流程.
downloadOnSaveboolean同时下载 UI 保存; 默认为 true。 。 。 .
onDocumentChange(change: DocxDocumentChange) => void在承诺更改后接收文档版本 .
onError(error: Error, info?: DocxErrorInfo) => void接收出错; 可收回的报告包括 recoverable: true。 。 。 .
collaborationDocxEditorCollaborationOptions配置共享复制品 .
showToolbarboolean显示内置或提供的铬; 默认为 true。 。 。 .
toolbarReactNode替换工具栏; null 藏来. 实验成分API.
showRulerboolean显示标尺; 默认值为 false。 。 。 .
showZoomControlboolean显示缩放控件; 默认为 true。 。 。 .
showHiddenTextboolean在布局中包含隐藏文本; 默认为 false。 。 。 .
previewFirstPageboolean实验性早期页面预览;默认关闭并配合忽略.
onFirstPagePainted() => void在每份文件第一页作画时打过一次电话.
pageMirror'full' | 'text'访问页面 DOM; 默认为 'full'。 。 。 .
measurementFontProviderBundledFontProvider覆盖此编辑器的测量字体提供者 .
i18nTranslations语言覆盖从 @betteroffice/docx-i18n。 。 。 .
pluginsreadonly DocxPlugin[]主机的扩展带有管理下的生命周期和权限.
memoryBudgetDocxMemoryBudget内存压力阈值和可选工人分配限额.
onMemoryPressure(pressure: DocxMemoryPressure) => void接收内存压力级别变化 .

折旧: legacySyncApi 保持同步 API , 并在 0. 6. 0 中删除; 省略它以使用默认的 aync 编辑器 .

onChange 得到一个完整的 Document 仅与 legacySyncApi。默认工人编辑器 拒绝, 显示文档替换错误, 并报告错误 onError启用 onDocumentChange 用于版本通知. experimentalWorkerOpen={false} 已贬值 工人编辑器是默认值.

编辑器参考

DocxEditorRef 暴露了async文档操作和编辑器的命令存储, commands。 。 。 . 等着 save() 导出 DOCX 字节,或 flushPendingInput() 在单独的主机操作之前 这必须包括已接受的打字和当前选择。 Flashing 等待活动 IME 如果输入失败,则将替换文档,或者编辑器卸载. 无法运行的已排队工作被拒用导出 DocxCommandAdmissionError,其 code 命名事业.

使用 readPositionAtPoint(clientX, clientY) 对于一个版本文本目标,位于 viewport 坐标. 使用 scrollToParagraph(paraId) 用于同步段落导航。 两者都支持默认工人 运行时间.

getPositionAtPoint 财务报告和审定财务报表 scrollToParaId 掷出 DocxSyncApiError 默认编辑器; 使用 readPositionAtPoint 财务报告和审定财务报表 scrollToParagraph。 。 。 .

主机保存

onSaveRequest 处理文件 > 在序列化前保存和 Cmd/Ctrl+S。 返回时 true 继续 内存; 返回 false 或者没有什么可以压制它。 Async 调用等待, 重叠 UI 请求共享一个工作流程, 错误到达 onError。 。 。 .

通话 save() 直接在不援引的情况下进行回调出口 onSaveRequest 再来一次. onSave 接收导出缓冲器; downloadOnSave={false} 禁用额外的UI下载.

装入和无障碍

previewFirstPage 绘制文档打开时仅显示的预览。 编辑和插件 激活等待完整的文档 . onFirstPagePainted 让一个主机放弃其装入 UI 当预览或完整文档页面首次出现时.

pageMirror="text" 保留可读文本、链接和DOM工作较少的表格。 在页面上省略 用于辅助技术和插件 DOM 区域查询的元素的文本位置.

getTotalPages() 返回当前(可能为临时)的页数。 等着 whenLayoutComplete() ;视图外的页面在显示时被构建.

search(query, options?) 显示正文匹配,包括表格,不移动 选择或焦点。 它返回一个承诺并在查看模式下工作; 匹配不区分大小写 除非 caseSensitive 已经设定。 空查询可以清除搜索.

searchNext() 财务报告和审定财务报表 searchPrevious() 通过匹配线包裹; searchGoTo(index) 选择匹配. 读取状态为 getSearchState(),订阅 onSearchChange(),并明确 clearSearch()。 。 。 .

主办提案

裁判 proposeChanges(), (中文(简体) ), setProposalStates(), (中文(简体) ), withdrawProposals(),以及 getProposals() 管理按主机建议ID分类的跟踪变化。 决定预览被接受的提案为简单 文本和隐藏被否决的文本; 撤回解决那些在历史之外的决定.

设定 allowHostProposals 允许只读或取景模式下的建议。 设定 showHostProposalsInSidebar 还有展示求婚卡 两者均默认失效; 提议访问无法输入、编辑批次、命令或插件.

工具栏和插件

利用试验成分API来安排内置控制或供应外置铬; 见 编写 DOCX 工具栏。 。 。 . 插件 API 也具有实验性. 用于主机面板、覆盖物、侧边栏项目、寿命周期和 获得授权的操作,参见 主机 DOCX 编辑器插件。 。 。 .

编辑批次和段落锁定

裁判 readParagraphs, (中文(简体) ), findText, (中文(简体) ), validateEdits,以及 applyEdits 冲出未完成的输入 版本检查过的操作。 见 DOCX 编辑批次 财务报告和审定财务报表 段落锁定 目标、身份和拒绝.

结构化的出口和内容管制

对于 exportStructuredWithPages(options) 在默认工人编辑器中,参见 页面碎片 供修订意见, 排版要求,和几何.

裁判 listContentControls 财务报告和审定财务报表 findContentControls 在检查版本前检查控制 填充;见 内容控制。 。 。 .

协作

这个 collaboration 道克将工人编辑器连接到一个共享的复制品上. 见 协作指南 对于复制的召回, 共享初始状态、交通线路和检查站.

字体和本地化

在挂起编辑器前配置可选的测量字体; 见 字体设置启用 measurementFontProvider 页:1 一个特定编辑提供者。 嵌入式字体面相隔开文档,当 编辑器卸载或装入另一个文档.

通过区域字符串 i18n; 字符串和翻译类型发布于 @betteroffice/docx-i18n。 。 。 .

记忆和恢复

getMemoryStats() 报告主线和工人WebAssembly记忆. onMemoryPressure 报告 出入口; memoryBudget 默认警告为75%,关键值为4个GiB的90%. memoryBudget.workerLimitBytes 工人编辑-核心分配.

一个失败的工人可以被替换一次每个编辑器,重新打开源并重放编辑. 对于字节来源,恢复使用最后一个检查站,所以撤销历史可以追溯到那个检查站. 如果修复失败, onError 报告失败和编辑停止。 协作会报告 没有自动替换的工人故障.

文档

版本与发布记录

@betteroffice/docx-react 共发布 14 个版本,首次发布于 2026/07/19;过去 12 个月发布了 14 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.1latest2026/10/2711 天前
0.5.02026/10/2613 天前
0.4.32026/10/031 个月前
0.4.22026/10/031 个月前
0.4.12026/10/011 个月前
0.4.02026/10/011 个月前

关于 @betteroffice/docx-react 的常见问题

@betteroffice/docx-react 是什么?

Word-fusional React DOCX编辑和取景器:全OOXML忠心,实时人类+AI代理合作.

如何安装 @betteroffice/docx-react?

在项目目录运行 npm install @betteroffice/docx-react,或使用 pnpm add / yarn add / bun add。

@betteroffice/docx-react 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@betteroffice/docx-react 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@betteroffice/docx-react 可以商用吗?

@betteroffice/docx-react 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@betteroffice/docx-react 的下载量有多少?

根据 npm 官方下载统计,@betteroffice/docx-react 在 2026/10/08 – 2026/11/06 这 30 天内被下载 84,747 次,日均约 2,825 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@betteroffice/docx-react 还在维护吗?

最新版本 0.5.1 发布于 2026/10/27(11 天前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/07/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。