【问题标题】:Printing HTML without forced page breaks在没有强制分页符的情况下打印 HTML
【发布时间】:2017-11-08 01:15:04
【问题描述】:

我正在尝试打印带有许多大块引用元素的 HTML,每个元素跨越半页或更多页。打印时,浏览器会添加分页符,以防块引用元素在当前页面内无法完成。

我已经在几个浏览器和同样的事情上尝试过这个。即使将在当前页面末尾的中间剪切,如何对 CSS 进行编程以显示块引用?

例如:

text-text text-text text-text text-text 
text-text text-text text-text text-text 
<blockquote>
text-text text-text text-text 
text-text text-text text-text 
</blockquote>

如果 "blockquote" 元素的内容在当前页面结束时还没有完成,浏览器会在它之前添加一个分页符。

如何防止这种情况发生?

我已经修改了 CSS 属性 page-break-before/inside/after 但这没有帮助。

【问题讨论】:

  • 我认为您在谈论默认浏览器样式,只需使用 css 覆盖它们。
  • @reinierkors 什么属性?那是我的问题。我已经摆弄了page-break-before/inside/after但没有成功

标签: html css printing page-break-inside


【解决方案1】:

我相信你想要这些规则中的一个或两个:

blockquote {
  page-break-before: avoid;
  page-break-inside: auto;
}

...或者前面的元素可能需要page-break-after: avoid

(这些属性显然正在被更通用的属性所取代,例如break-before,尽管新版本目前尚未得到广泛支持。)

根据下面的 cmets,这里显然与 display:block 有一些互动; display:inline-block 不会触发分页行为。

【讨论】:

  • 好的。我承认我从来不需要这个属性,所以我不知道是否有需要注意的怪癖;分页符通常由page-break-foo 属性控制,因此它将成为其中之一。
  • 摆弄更多。我找到了答案。似乎
    阻止了这一点。我恢复为 display:block 并且您的解决方案有效。请编辑您的答案,以便我投票并接受。
  • @m.r.那很有意思!而且相当令人惊讶!老实说,我不知道为什么会这样——即使我的回答只对了一半,我也很高兴能够在正确的方向上为您提供帮助……
  • display:block 触发该行为。 display:inline-block 没有
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
  • 2010-12-16
  • 2020-09-13
  • 2016-04-06
  • 1970-01-01
相关资源
最近更新 更多