如果将容器在打印时碰到新页面,是否可以使容器垂直居中?

如图所示,容器A可能太大,以至于A和B将占据它们自己的页面。发生这种情况时,我希望B或两者都居中。

+----------------+       +----------------+   +----------------+
| +------------+ |       |                |   |                |
| |            | |       | +------------+ |   |                |
| |     A      | |       | |            | |   |                |
| |            | |       | |            | |   | +------------+ |
| +------------+ |       | |            | |   | |            | |
|                | +---> | |     A      | |   | |     B      | |
| +------------+ |       | |            | |   | |            | |
| |            | |       | |            | |   | +------------+ |
| |     B      | |       | |            | |   |                |
| |            | |       | +------------+ |   |                |
| +------------+ |       |                |   |                |
+----------------+       +----------------+   +----------------+

我们正在使用wkhtmltopdf生成PDF。在我们的情况下,从PDF打印就足够了。但据我所知wkhtmltopdf不支持像这样居中。所以我想知道是否可以通过CSS和/或javascript来实现。

一种想法是计算容器的高度并在JS中设置适当的顶部边距。但这需要知道何时/是否将容器移动到下一页,我认为是?

最佳答案

看来浏览器在您的屏幕和一张纸之间没有任何区别:它知道每种介质的尺寸。

Demo here,已在Firefox和Chrome中测试。

我尝试了一种简单的居中技术(表中的height:100%vertical-align:middle),并且效果很好。唯一的问题是所有容器都将占据一个页面。

您可以为打印机设置样式,如下所示:

@media print {
    html, body, .page {
        height: 100%;
        padding: 0;
        margin: 0;
    }
}

08-25 17:47
查看更多