① 怎樣在web中實現報表列印和列印預覽
一、 瀏覽器的菜單列印功能
這是最簡單的,只需點擊頁面上的列印菜單,但是也是問題最多的,基本上是不能滿足用戶需要。比如:不能精確分頁,有出現打出半行字的風險;改變紙型後列印出的格式和頁面顯示的格式相差太大;頁眉頁腳也需要從菜單中去設置,等等等等。這種方案最大的優勢就是不需要做任何代碼,點擊列印就可以了。
二、 window.Print()
這實際上,是瀏覽器列印功能菜單的一種程序調用。與點擊列印功能菜單一樣,不能精確分頁,不能設置紙型,套打的問題更加無從談起,只不過,可以讓用戶不用去點菜單,直接點擊網頁中的一個按鈕,或一個鏈接裡面調用罷了。
需要指出的是這種方法提供一個列印前和列印後的事件onbeforeprint、onafterprint。可以在列印前的時候重新編輯一些格式,專門送去列印,列印後又處理回來。
function window.onbeforeprint()
{
//將一些不需要列印的隱藏
}
function window.onafterprint()
{
//放開隱藏的元素
}
事實上,很多用戶都是採用這種方式列印,但是這種方式最致命的缺點是不能設置列印參數,比如紙型,頁邊距,選擇列印機等等。
三、 導出excel導出pdf文件的列印
將需要列印的數據導出excel文件或者導出pdf文件,然後打開excel文件或者pdf文件重新列印,用這種方案能實現精確的列印,套打也能實現,但是需要客戶端安裝excel和adobe軟體,操作起來也有些麻煩,並且導出的excel文件可以重新修改編輯,一般用戶都會要求系統提供這種導出的方案,也同時需要直接列印的功能,所以個人覺得這種方案也不能很好的解決列印的問題。
四、 純ActiveX控制項
這種方案其實就是編寫一個C/S的列印控制項,然後嵌入到頁面裡面,將要列印的數據裝入到控制項中,然後列印。這種方案的優點是列印精度高,分頁,設置列印參數等等都能實現。但是缺點也是很明顯的,嵌入ActiveX控制項破壞了web應用的整體html風格,且這樣的控制項通常都比較大,一般都超過1M,下載很慢。