支持的功能
下表展示了每种文档功能在转换流水线的三个阶段中的表现:
- 导入 将 DOCX 内容转换为 Tiptap JSON。
- 编辑器 在浏览器中渲染该 JSON。每种节点和标记类型都需要匹配的 Tiptap 扩展才能正确显示。
- 导出 将编辑器内容转换回 DOCX 文件。
某项功能可能在某个阶段受支持,但在另一个阶段不受支持。例如,制表符会被导入并在编辑器中渲染,但导出扩展目前还不会将其写回 DOCX。
导入和导出各自都有两种集成路径:一种是 编辑器扩展,另一种是 REST API。对于大多数功能,这两种路径会产生相同的结果。对于存在差异的地方(脚注、页眉/页脚、导出自定义),相关安装页面会说明具体细节。
编辑器列默认假设使用 ConvertKit
下表中的编辑器列默认假设推荐配置:已安装 ConvertKit 作为编辑器的扩展套件。ConvertKit 是基础功能的超集(相当于 StarterKit 的节点,加上针对 Paragraph、Heading、Image 以及表格栈的 DOCX 感知覆盖)。如果没有 ConvertKit,段落间距和缩进、图片裁剪以及表格单元格格式仍会被提取到 JSON 中,但会被编辑器的 schema 丢弃。若编辑器支持取决于其他因素(Pages、某个自定义扩展),该行会注明依赖项。
其他格式
这些表格专门描述 DOCX 流水线,因为 DOCX 是所有其他导出所基于的参考格式。PDF、ODT、EPUB 和 DOC 都是先生成一个 DOCX 文件,然后通过云服务将其转换为目标格式。凡是在 DOCX 导出中可用的功能,通常也会延续到其他格式,不过每种格式都可能引入自己的限制。详情请参见相应格式页面。
Markdown 走的是完全独立的转换路径,并支持另一组功能。相关内容记录在其单独的页面中。
行内格式
块级元素
文本和段落样式
导入服务会从 DOCX 源中提取段落级样式属性,例如间距、缩进和行高。ConvertKit 的自定义 Paragraph 和 Heading 会自动渲染这些样式。对于文档命名样式目录(Heading 1、Normal、Quote 等)中的排版样式,请使用实验性的 CSS 注入 功能,它会将样式目录提取为带作用域的 CSS 规则。
* 字间距会被提取为 textStyle.letterSpacing,但没有内置扩展来渲染它。若要渲染导入的字间距,请 扩展 TextStyle。
** Word 的命名样式排版默认不会应用。请使用 CSS 注入 将其提取为带作用域的 CSS。
*** 行高会作为段落节点属性导入,并在使用 ConvertKit 的编辑器中正确渲染。但 DOCX 导出时读取的是 textStyle 标记中的行高,因此无法完整往返:导入的值会保留在编辑器中,但在导出时被丢弃。
列表
表格
单元格级和行级属性(背景、边框、垂直对齐、行高)需要 ConvertKit 的 ConvertTableKit,该套件默认包含。若使用独立的 @tiptap/extension-table,这些属性仍会被提取到 JSON 中,但会被编辑器的 schema 丢弃。若要通过 Pages 扩展 实现分页布局,请改用 PagesTableKit;其表格扩展在内部继承了 ConvertKit 的扩展,因此相同的 DOCX 单元格属性也会继续传递。有关具体组成,请参见 表格内容参考。
| 功能 | 导入 | 编辑器 | 导出 |
|---|---|---|---|
| 基础表格 | ✓ | ✓ | ✓ |
| 合并单元格(colspan) | ✓ | ✓ | ✓ |
| 合并单元格(rowspan) | ✓ | ✓ | ✓ |
| 表头行 | ✓ | ✓ | ✕ |
| 列宽 | ✓ | ✓ | ✓ |
| 单元格背景 | ✓ | ✓ | ✕ |
| 单元格边框 | ✓ | ✓ | ✕ |
| 单元格垂直对齐 | ✓ | ✓ | ✕ |
| 行高 | ✓ | ✓ | ✕ |
媒体
* ConvertKit 的自定义 Image 会声明 cropTop/cropBottom/cropLeft/cropRight,并将它们作为 data-crop-* 属性输出。若要实现视觉裁剪,请添加 CSS,将这些数据属性转换为 clip-path 或 object-position。
页面布局
* 导入行为在不同集成路径之间有所不同。REST API 会在响应中将脚注、尾注以及页眉/页脚作为独立字段返回。编辑器扩展 会通过 Pages 扩展自动应用页眉和页脚,但不会暴露脚注或尾注数据。详情请参见安装页面。
页面布局需要 Pages 扩展
页眉、页脚、分页符以及分页布局都需要 Pages 扩展 才能在编辑器中渲染。没有它,即使转换服务生成了这些内容,也没有地方可供显示。
不支持
这些功能在导入期间不会被转换,或者仅有限转换。
| 功能 | 状态 |
|---|---|
| 注释和批注 | 未转换。comments 扩展存在,但未连接到转换。 |
| 跟踪更改和修订 | 未转换。tracked changes 扩展存在,但未连接到转换。 |
| 目录 | 作为 tableOfContents 节点导入(标题和标题范围)。需要一个自定义扩展才能在编辑器中渲染它。现有的目录扩展是一个用于构建侧边栏导航的无头工具,而不是文档块渲染器。未导出。 |
| 文本框 | 未转换。文本框中的内容不会被提取。 |
| 形状、SmartArt、WordArt | 未转换。导入期间不会提取这些元素。 |
| 域代码(DATE、AUTHOR、PAGE、MERGEFIELD) | 缓存的显示值会作为纯文本保留(例如,显示“April 10, 2026”的 DATE 域会作为文本“April 10, 2026”导入)。域代码本身不会被转换,因此其值会变为静态且不会更新。 |
| 文档元数据(作者、标题、关键词) | 未转换。元数据不包含在 JSON 输出中。 |
| 表单域和内容控件 | 未转换。行内结构化文档标记(SDT)会保留其文本内容,但控件元数据会被丢弃。 |
| 隐藏文本 | 标记为隐藏的文本片段(w:vanish)会从导入输出中排除。 |
| 从右到左的文本方向 | DOCX <w:bidi>(段落方向)和 <w:rtl>(文本段方向)在导入时不会解析,也不会在导出时写入。以阿拉伯语、希伯来语、波斯语、乌尔都语以及其他 RTL 语言编写的文档,会以编辑器的 CSS 方向渲染(默认 LTR)。今天可在编辑器根节点上设置 dir="rtl",或在应用层检测语言来处理。详情参见文本对齐。 |