做管理系統的時候,列印一直是個棘手的問題,做b/s的系統這個問題就更加突出了!下面舉出三種常用的web列印處理方式
1、利用word或者excel來實現web列印(如果不修改ie設定,可以在web伺服器端生成xls檔案,然後通過xlbook = xls.workbooks.open(remotepath) 獲取物件列印)function excelprint()
excelsheet = excelbook.activesheet;//啟用excel工作表
var rowlen = printtable.rows.length;//table物件的行數
for (var i=0;i< rowlen;i++) //將**中的每個單元格的innertext匯入到excel的單元格中
excelsheet.printout(); //列印工作表
excelbook.close(true); //關閉文件
< /script>
注意:執行該程式的前提是 ie要允許對沒有標記為安全的activex控制項進行初始化和指令碼執行。設定方法如下:
開啟控制面板→internet選項→安全性→自定義級別→對沒有標記為安全的activex控制項進行初始化和指令碼執行→選中啟用,這樣我們的程式就可以執行了。如果沒有啟用該activex控制項設定,那麼程式在執行建立excel物件時會丟擲乙個異常,這時可以通過catch()語句來捕獲這個異常,並且做出相應的處理。
執行該程式必須客戶端安裝了ms excel,否則activex驅動不了。
2、利用瀏覽器自帶的列印控制項來實現web列印
實現過程:直接呼叫ie的列印功能或者在程式中呼叫window.print()來實現web列印,頁首和頁尾會有網頁標題、頁碼、**,日期等資訊,這些列印時如果不需要,怎樣能去掉呢。做法其實很簡單,只有在ie的檔案選單中開啟頁碼設定對話方塊,去掉頁首頁尾中設定的哪些資訊,就可以了。但是這需要每個客戶端都去手動設定一次。如果不想讓每個客戶端都手動去設定一次,也可以用**通過修改登錄檔的鍵值來實現。
下面是用vbscript來實現的修改登錄檔的過程:
< script language="vbscript">
dim path, reg
'path存放ie列印設定的登錄檔位址, reg存放wscript.shell元件的物件
path = "hkey_current_user\software\micro-soft\internet explorer\pagesetup"
'通過登錄檔修改列印設定,只修改頁首、頁尾和各邊界的值
'引數說明:header--頁首,footer--頁尾,margin_left--左邊界
'margin_top--上邊界,margin_right--右邊界,margin_bottom--下邊界
'頁邊距的設定中 1對應25.4mm,即margin_left=1表示實際值的25.4mm
function pagesetup(header, footer, margin_left, margin_top, margin_right, margin_bottom)
on error resume next
set reg = createobject("wscript.shell")
if err.number>0 then
msgbox "不能建立wscript.shell物件!"
exit function
end if
reg.regwrite path+"\header", header'設定頁首
reg.regwrite path+"\footer", footer '設定頁尾
reg.regwrite path+"\margin_left", margin_left'設定左邊界
reg.regwrite path+"\margin_top", margin_top'設定上邊界
reg.regwrite path+"\margin_right", margin_right'設定右邊界
reg.regwrite path+"\margin_bottom", margin_bottom'設定下邊界
end function
< /script>
還有一點需要注意的是,利用window.print()這樣的方法來列印,是直接彈出列印對話方塊,而不是列印預覽的視窗。一般來說使用者希望先列印預覽一下,然後再列印。或者有的格式固定的,每次都是一樣的格式,就希望不彈出列印對話方塊,直接就列印出來。
還有的使用者希望每個列印都是直接和一種紙張繫結好,列印時候直接就呼叫那種型別的紙張來列印,這樣window.print()顯然遠遠不夠。
3、利用第三方的控制項或者報表軟體來實現web列印
實現過程:第三方控制項將列印的引數和方法封裝成物件,在頁面中可以方便的直接呼叫,例如scriptx.cab,reyoprint.cab 都是這種型別的控制項。可以直接用**實現web列印頁首頁尾的設定,web列印紙張的繫結,web列印邊距的設定,web列印預覽,直接web列印。
web列印格式設定,web列印分頁,web列印換頁重新列印某些資訊,某些資訊只能第一頁列印,某些資訊只能最後一頁列印等等這些,也都解決方案。scriptx沒有處理這些的方案,webprint有webgrid和reyoprint兩種解決方案,行列規則的**式的可以簡單webgrid來處理,複雜格式的可以用reyoprint來設計格式。
免費的WEB列印PAZU控制項
ie直接列印一直是小專案中的列印解決方案,可是對ie不能進行過多的控制,也有許多不便之處,我在做手頭的專案中就遇到了問題,客戶端列印一直用b5的紙列印,可是每次關閉ie後下次再啟動,就又預設成了a4,還有頁首頁尾的設定都有些另客戶很麻煩,找來找去了,找了乙個叫pazu 的控制項。現在好像是可以免費使...
列印web頁面指定區域的三種方法
本文和大家分享一下web頁面實現指定區域列印功能的三種方法,一起來看下吧。第一種方法 使用css 定義一 個.noprint的class,將不列印的內容放入這個class內。如下 這 裡是要列印的內容。這裡是不列印的內容。第二種方法 指定列印區域 把要列印的內容放入乙個span或div,然後通過乙個...
WEB免費列印控制項推薦
下班時候在看到一篇web列印總結篇,感覺不粗,給版內的兄弟們 原文作者 六六 在web系統中,列印的確是個煩人的問題。要麼自己開發列印控制項,如果專案時間緊,肯定來不及。要麼購買成熟的列印控制項,如果是大專案可以考慮,但如果專案只有幾k到1 2w之間,這就麻煩了。前段時間有機會接觸了一下web列印。...