在Chrome上使用Javascript获取打印页面的宽度/高度

在Chrome上使用Javascript获取打印页面的宽度/高度,javascript,html,css,dom,css-paged-media,Javascript,Html,Css,Dom,Css Paged Media,我想打印一个HTML页面,并对打印布局有更多的控制,所以我首先将@page设置为一个特定的大小(在我的例子中是A4肖像),现在我需要检查我拥有的一些动态内容是否可以放入该页面,或者我必须手动将其拆分到几个地方 我的主要问题是如何获得打印页面的高度/宽度尺寸 我试着设置一个宽度和高度都为100%的div,然后得到它的高度,但是它给了我一个错误的结果。为了便于测试,您可以使用以下方法:(这是一个打印为PDF的库,基本上只使用chrome打印并显示PDF) 我总是得到600px的高度,无论我使用A3、

我想打印一个HTML页面,并对打印布局有更多的控制,所以我首先将@page设置为一个特定的大小(在我的例子中是A4肖像),现在我需要检查我拥有的一些动态内容是否可以放入该页面,或者我必须手动将其拆分到几个地方

我的主要问题是如何获得打印页面的高度/宽度尺寸

我试着设置一个宽度和高度都为100%的div,然后得到它的高度,但是它给了我一个错误的结果。为了便于测试,您可以使用以下方法:(这是一个打印为PDF的库,基本上只使用chrome打印并显示PDF)

我总是得到600px的高度,无论我使用A3、A4或A1,这显然是错误的


这只需要在Chrome上工作。(我知道这很奇怪,但我需要一个使用CSS3页面媒体和所有相关内容无法实现的布局)

A4页面大小定义为210mm x 297mm,即8.268“x 11.69”。由于CSS像素是96px/英寸(只要我们谈论的是像打印机这样的高分辨率设备——CSS像素等于低分辨率应用程序的设备像素),我认为您应该能够依赖页面大小793.7px 1123px,减去您想要提供的任何边距,无需通过代码提取这些值。

可以对要拆分的DOM元素执行分页符操作,如
@media print{img{page break after:always}}
,确保元素必须是block element not inline或inline block

是,我的备份只是硬代码值,但JS获得可用的是一个更好的解决方案,因为它可以在A4或A3或我将来使用的任何格式下工作(页面大小实际上是传递到此页面的设置),请参见此处的javascript: