2013-08-01 51 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; } 

快樂編碼