【发布时间】:2010-02-07 19:57:13
【问题描述】:
打印时分页的 CSS 代码是什么?或者更好的是,是否有一些像 JQuery 这样的打印 CSS 框架用于网页 DOM 操作?我需要使用 Adobe PDF 等控件打印网页,但不使用第三方插件。打印需要精确,例如控制每个页面顶部的像素(例如,如果我们想将徽标放在每个页面标题上。
有什么想法吗?
【问题讨论】:
打印时分页的 CSS 代码是什么?或者更好的是,是否有一些像 JQuery 这样的打印 CSS 框架用于网页 DOM 操作?我需要使用 Adobe PDF 等控件打印网页,但不使用第三方插件。打印需要精确,例如控制每个页面顶部的像素(例如,如果我们想将徽标放在每个页面标题上。
有什么想法吗?
【问题讨论】:
page-break-before: always;
page-break-after: always;
【讨论】:
您可以尝试使用page-break-before or page-break-after 属性强制分页。
像素完美的打印控制将非常非常难以实现。例如,每个浏览器都会添加一个您无法影响且只有用户可以关闭的页脚和页眉部分。浏览器无视背景图像,并倾向于设置它们认为合适的边距。
关于如何为打印设置 HTML 样式的概要,这篇 Smashing Magazine 文章可能会提供一些建议:Printing the Web: Solutions and Techniques
【讨论】:
浏览器对打印的支持非常弱,充其量是。例如,让页面标题图像之类的东西工作起来会很困难。我不知道有什么浏览器甚至支持“@page”CSS 声明,更不用说 CSS3 的运行内容功能了。
另一方面,Java 的 FlyingSaucer PDF 工具包在将 XHTML 转换为 PDF 方面做得非常出色(尤其是考虑到它是免费的)。我们将它与 Freemarker 一起使用来模板化“页面”,但它处理图像、运行页眉/页脚文本,甚至是文档内链接。
【讨论】:
我不确定您使用的是哪种服务器语言,但我在 wkhtmltopdf 和 wicked_pdf 上为 Ruby on Rails 取得了巨大成功。
【讨论】:
您无法从浏览器获得像素级打印精度。您唯一的选择是 PDF 或类似的第 3 方文档格式。但是,如果您只想确保徽标位于页面顶部而不是下一页底部,则可以使用 page-break-before、page-break-after 属性
【讨论】:
w3schools.com 有一个方便的CSS Reference。由于我们大多数人都不记得许多不常见的 css 属性,希望这对您有用。
【讨论】: