如何使用CSS代码在打印网页时进行分页?

10

如何在打印时使用CSS代码进行分页?或者是否有像 JQuery 对Web页面 DOM 操作那样的打印 CSS 框架?我需要像 Adobe PDF 那样控制打印网页,但不使用第三方插件。打印需要精确控制,例如可以控制哪些像素位于每个页面的顶部(如果我们想在每个页面的页眉上放置公司标志等)。

有什么好的建议吗?

6个回答

16
最初的回答:这两个代码是用来控制分页的,在HTML打印时经常使用。第一个代码会在当前元素之前插入分页,而第二个代码则会在当前元素之后插入分页。

5
你可以尝试使用page-break-before或page-break-after属性来强制分页。
像素完美的打印控制将非常困难。例如,每个浏览器都会添加页眉和页脚部分,您无法影响,只有用户可以关闭。浏览器忽略背景图像,并倾向于根据自己的意愿设置边距。
关于如何为打印样式HTML,这篇Smashing Magazine文章可能提供一些指导:Printing the Web: Solutions and Techniques

3
浏览器对打印的支持非常弱。例如,实现页面页眉图像将会非常困难;我不知道有哪些浏览器甚至支持"@page" CSS声明,更别提CSS3的运行内容功能了。
另一方面,Java的FlyingSaucer PDF工具包在将XHTML转换为PDF方面表现出色(尤其是考虑到它是免费的)。我们使用它与Freemarker一起模板化“页面”,但它可以处理图像、运行页眉/页脚文本,甚至是文档内链接。

2

我不确定您使用的服务器语言是什么,但我在Ruby on Rails上使用wkhtmltopdfwicked_pdf取得了巨大的成功。


1

w3schools.com有一个方便的CSS参考。由于我们大多数人无法记住许多不常见的CSS属性,希望这对您有用。


1

浏览器无法提供像素级别的打印精度。您唯一的选择是使用PDF或类似的第三方文档格式。但是,如果您只想确保徽标位于页面顶部而不是下一页底部,您可以使用page-break-before、page-break-after属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接