找出浏览器在打印时插入分页符的位置

时间:2012-11-12 15:12:04

标签: html dom browser chromium gecko

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

你到底想要达到什么目的?您可以根据分页符设置页面样式,以及是否仅使用带有media queries的CSS打印页面。

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