ABCpdf 包括两个 HTML 渲染引擎。
MSHTML 是基于 Trident 的,将产生与您系统上安装的 IE 版本大致相似的输出。
Gecko 是基于 Firefox 的,截至 2013 年 6 月,将产生与您在 Firefox 21 中看到的大致相似的输出。
您可以使用 Doc.HtmlOptions.Engine 属性在两个引擎之间切换。
两个引擎都支持分页 CSS 样式。您可以使用以下内容:
<div style="page-break-before:always">some text</div>
<div style="page-break-after:always">some text</div>
<div style="page-break-inside:avoid">some text</div>
请注意,page-break-inside 是对基本 MSHTML 行为的补充。
这两个引擎对这些结构的处理略有不同。一般来说,MSHTML 更加宽容和直观。但是,应用样式的元素必须是可见的才能工作。
因此,如果样式不会在您期望的位置产生中断,调试它们的最简单方法是将边框样式应用于元素,以便您可以看到中断应该发生的位置。这通常会使问题的原因显而易见。
Gecko 引擎中的分页符样式并不总是像在 MSHTML 中那样直观地应用。其根源在于 CSS 规范,该规范规定中断样式必须适用于“根元素的正常流程”中的块级元素。它允许将这些样式应用于其他元素,但不强制这样做。
这样做的结果是,在 Gecko 引擎中,分页符样式不能在表格中应用于表格行等元素。如果您不确定某事是否可行,请尝试从 Firefox 21.0 中的 Print Preview 进行简单的完整性检查。