2013-08-01 101 views
2

问题摘要:我希望能够检测到用户的打印机页面大小,以便根据打印机的页面大小发送不同的页面布局。在CSS或JavaScript中检测打印机的页面大小

示例使用案例:我们的用户是企业。有些用户希望打印基本收据(因此他们有小型打印机),有些用户希望打印发票(即正常的8“* 11”页)。根据打印机的页面大小,我们可以识别应该将什么格式发送到打印机。

CSS规范:理想情况下,不同页面大小的CSS介质设置。 CSS的标准一直在这一点,并在CSS 2.1 spec it says

然而,打印机应通过选择媒体时打印由CSS尺寸属性提供页面大小值的指导。

CSS 3 spec appears to offer a good solution

/* style sheet for "A4" printing */ 
@media print and (width: 21cm) and (height: 29.7cm) { 
    @page { 
     margin: 3cm; 
    } 
} 

/* style sheet for "letter" printing */ 
@media print and (width: 8.5in) and (height: 11in) { 
    @page { 
     margin: 1in; 
    } 
} 

实际实现情况:那么这是怎么被整个主流浏览器实现的。有没有人执行过这个?它在哪些浏览器中工作?什么代码实际工作?

附加信息: It looks like this is working in a few browsers。那么这是否适用于页面大小,而不仅仅是风景/肖像。

@media print { @page {size: landscape } } 
+2

我认为这仅仅是CSS,无关的javascrip吨。 – RobG

+0

对,看起来最好的方法可能是CSS,但我不在乎解决方案是否使用CSS和/或JavaScript – SemanticZen

+0

另外,我不会在A4中使用诸如“width:21cm”之类的东西,由于A4页面的宽度大约为21厘米,而不是_exactly_ 21厘米! (差异小于一个像素,但仍...) –

回答

0

以下媒体查询,工作可靠,我与收据打印机:

@media print and (max-width: 10cm) { } 

在一个有点相关的注意:不幸的是,这是行不通的(用户必须手动设置页边距无或最少)

@page { margin: 0; } 

快乐编码