页面结构

Beta

页面结构涵盖控制内容如何跨页面流动的元素:分页符、节、页面大小、页边距和页码。分页符可在管道中完整往返。其他页面结构属性仅部分支持。

你需要了解的内容

  • 扩展: @tiptap-pro/extension-pagebreak(不在 StarterKit 中)以及用于分页布局的 Pages
  • 导出选项: 导出扩展或 REST API 上的 pageSizepageMargins
  • 集成路径: 通过 编辑器扩展REST API 导入与导出都以相同方式工作。两种导出路径都接受 pageSizepageMargins

支持概览

功能导入编辑器导出
分页符支持支持(PageBreak)支持
页面大小不支持支持(Pages支持(可配置)
页边距不支持支持(Pages)支持(可配置)
部分支持(会提取并应用栏配置)不支持仅单节
页码支持(PAGE/NUMPAGES → {page}/{numpages} 标记,见下文支持(通过页眉/页脚)仅编辑器扩展:页眉/页脚中的 {page}/{total} 标记会输出实时的 PAGE/NUMPAGES 域。REST API 导出会输出字面文本。
导入时支持(会创建 columns/column 节点)不支持不支持

分页符

分页符可在管道中完整往返。详见专门的分页符页面。

页面大小和页边距

DOCX 中的页面大小和页边距不会被导入。解析器会从节属性中读取它们,但 Tiptap 渲染器会丢弃这些信息。

Pages 扩展提供带可配置页面大小和页边距的分页布局。配置详情请参见页面格式指南

导出扩展接受 pageSizepageMargins 选项:

ExportDocx.configure({
  pageSize: {
    width: '21.0cm',
    height: '29.7cm',
  },
  pageMargins: {
    top: '2.54cm',
    bottom: '2.54cm',
    left: '3.17cm',
    right: '3.17cm',
  },
})

这些值支持 CSS 风格单位:cminptpcmmpx。默认值会生成带标准 Word 页边距的 A4 页面。

Pages 与导出之间不会自动同步

导出扩展不会自动从 Pages 扩展读取页面大小或页边距。如果你的编辑器使用自定义页面格式,请在导出配置中传入匹配的值。

Word 文档可以有多个节,每个节都有自己的页面布局属性(大小、方向、页边距、栏、页眉/页脚)。转换管道对节的支持是部分的:

  • 导入: 节边界用于检测多栏布局。多栏节会被包装为 columns/column Tiptap 节点。其他节级属性(大小、方向、页边距)会被解析,但不会应用。
  • 编辑器: Tiptap 没有节的概念,但栏节点可以原生渲染。
  • 导出: 生成单个节。无法创建纵向/横向混排或多节文档。

页码

Word 中的页码是页眉和页脚里的域代码(PAGENUMPAGES)。当安装了 Pages 扩展时(或者你显式启用它:在 编辑器命令 中设置 placeholders: true(或 { page?, total? }),或者在 REST API 中使用 placeholders={} 表单字段),导入会将它们转换为规范文本标记(PAGE 对应 {page}NUMPAGES 对应 {numpages})。导出时,编辑器扩展 会在页眉/页脚内容中输出 {page} / {total} 标记,并将其作为实时的 PAGE / NUMPAGES 域,这样 Word 就会在打印或重新分页时重新计算它们。REST API 导出也会进行同样的转换;传入 placeholders: false 可将这些标记保留为字面文本。

Pages 扩展默认识别 {page}{total};它识别 {numpages}。若要让 Word 的 NUMPAGES 域在导入后于编辑器预览中实时渲染,请配置 Pages.configure({ placeholders: { total: 'numpages' } })。参见 DOCX 导入 → page-number fields

可往返内容

功能可往返?说明
分页符需要 @tiptap-pro/extension-pagebreak
页面大小编辑器(Pages)和导出需分别配置
页面边距编辑器(Pages)和导出需分别配置
部分列配置会保留;其他节属性不会保留
页码是(编辑器扩展导出)Word PAGE / NUMPAGES{page} / {numpages}(Pages 中总页数的规范名称是 {total};配置 placeholders: { total: 'numpages' } 以实现映射)。通过 REST API 重新导出不会转换这些标记;往返请使用编辑器扩展。
部分导入会创建栏节点;导出目前尚不会将其写回