5

我试图弄清楚在打印或打印预览 HTML 文档时,浏览器(特别是 firefox 或 chrome)会在哪里插入分页符。现在我不想避免休息,也不想定义确切的休息位置。我知道 CSS 2.1 和 CSS 3.0 中定义的 page-break-* 元素。我真的很想弄清楚当前页面上的最后一个元素和下一页上的第一个元素,并将它们与实际的 HTML 代码相关联。

据我所知,没有可以注册的事件或信号。我想到的下一件事是修补 webkit 或 gecko 并添加自定义信号/事件。但这只有在分页代码没有分散在太多文件和成员中的情况下才有可能。

我并不是要一个完整的解决方案,而是要任何想法或暗示如何实现这一点。

提前感谢您的任何建议和想法:)

更新:我需要以编程方式确定分页符的位置,因为我想根据结果修改和操作原始 HTML 文件。

4

1 回答 1

0

你到底想达到什么目的?您可以根据分页符以及是否仅使用带有媒体查询的 CSS 打印页面来设置页面样式。

如果 CSS 不足以满足您的用例并且修补渲染器是一个合适的解决方案:在 Gecko 上,您可以 grep nsCSSFrameConstructor.cpp调用 AddPageBreakItem,然后找出它在哪里插入中断。分页的 nsPresContext 意味着这是一个用于打印或打印预览的框架。查找对 nsPresContext::IsPaginated 和 nsPresContext::IsRootPaginatedDocument 的调用。

于 2012-11-12T16:56:54.460 回答