限制

Pages 扩展有少量明确的限制。下面列出的每一项都是有意为之(不是 bug),而且大多数都有文档化的变通方法。

过大的不可拆分块会导致无限布局循环

这是在采用 Pages 之前最重要的一项限制,务必了解。

会发生什么

Tiptap Pages 会在自然断点处将内容拆分到各个页面中。它有一种内容 无法 拆分:建立了 块格式化上下文(BFC) 的块,最典型的是 表格行,但也包括图形、定位容器以及许多设置过样式的容器(任何带有 display: inline-blockoverflow: hidden、某些 contain 值或浮动的元素)。当页面流遇到这些块之一而它又放不下当前页面时,唯一能做的就是把整个块移到下一页。

为什么这会变成严重故障

如果这个块比页面本身还高,那么把它往后移也没有帮助,因为它在下一页上仍然放不下。布局会不断尝试把它继续往后推,一页接一页,永远无法达到稳定状态。结果就是无限布局循环以及无响应的编辑器。这是让 Pages 变得不可用的最常见方式。

为什么我们不会自动恢复

这是 Pages 当前在页面之间划分内容方式的硬性限制,不是一个我们打算悄悄绕过的 bug。我们无法在不让布局静默丢失内容的情况下提供一个优雅的“放弃”点。未来我们可能会在一个主要版本中重新审视底层方案;目前,请将过大的 BFC 块视为开发者需要负责处理的问题。

需要注意什么

最常见的是:

  • heightRule: "atLeast" 允许其高度增长到超过页面的表格行。
  • 从 DOCX 导入、且原作者使用的纸张远大于编辑器页面格式的表格。
  • 单元格内嵌套表格,导致外层行高超过页面。
  • 内容本身比页面内容区域还大的图形或定位容器。

如何避免

  1. 限制高度。 对不可拆分的块应用 max-height。Pages 扩展会通过一个 CSS 变量暴露可用内容高度:使用 max-height: var(--page-max-height) 可将任意块限制在单页内。
  2. 手动拆分内容。 当单个块需要跨越多页时,在编辑时将其拆分为更小、相邻的块:把长表格拆成几个更小的表格,把高图片拆成更小的图片,把嵌套表格改成扁平表格。
  3. 约束 atLeast 行。 对于从 DOCX 导入的表格,如果行内容是有边界的,优先使用 heightRule: "exact";内容无边界的 atLeast 行是最常见的触发因素。
  4. 选择适合内容的页面格式。 为 Tabloid 编写的文档无法在 A5 上正确排版;请选择内容区域大于你最高的不可拆分块的页面格式。

如何检测

当 Pages 扩展在循环完全失控之前检测到这种情况时,会在控制台输出警告。开发期间请注意查看。导入用户提供 DOCX 的生产代码应将该警告视为信号:要么拒绝该文档,要么在插入前以程序方式拆分过高的行。

关于此限制在表格上的专门处理方式,请参阅 PagesTableKit 的已知问题

表格需要 PagesTableKit,而不是开源 Table 扩展

在 Pages 中的任何表格都请使用来自 @tiptap-pro/extension-pages-tablekitTableKit。开源的 @tiptap/extension-table 以及 ConvertKit 内置的 ConvertTableKit 都不支持分页安全:基于它们构建的表格会溢出页面边界并破坏布局。有关设置,请参阅 在 Pages 中使用 TableKit;更深入的说明请参阅 PagesTableKit

脚注不会跨页继续

当一页中的脚注数量超过配置的上限(footnotes.maxHeightRatio,默认占页面内容高度的 50%)时,脚注区域会裁剪超出的部分。Microsoft Word 则会将溢出的脚注继续排到下一页;Pages 目前还不支持这样做。实际上,这只会影响那些在同一页中引用了许多较长脚注的文档;如果遇到上限,请保持脚注简洁,或提高 maxHeightRatio。有关脚注特有限制的完整列表(编号格式、导出脚注中的表格),请参见 脚注 → 不要期待什么;有关尾注特有限制的完整列表,请参见 尾注 → 不要期待什么

不支持按页样式

所有页面共享相同的布局和视觉样式。不支持页面专属的 CSS 规则或背景。

Unsupported page templates

Every page uses the same structure. Multi-column layouts, alternating page templates, and per-page customization are not supported.

不支持浏览器打印集成

Pages does not implement the browser print dialog. For print-ready output, use the Tiptap Conversion extensions and REST endpoints. See the Conversion overview, or for end-to-end setup, From zero to print-ready.

帮助我们确定优先级

如果你需要的功能目前还不支持,请告诉我们。你的反馈有助于我们确定优先级。

与 Tiptap 分享你的使用案例