-------------------------------------------一 基于Web的打印方案比較分析--------------------------------
基于web的套打,難度在于要將瀏覽器中呈現(xiàn)的html,精確地打印到票據(jù)中,而且能夠?qū)崿F(xiàn)對分頁位置的控制。下面就ie瀏覽器所能采用的套打解決方案,來個(gè)匯總分析,希望對大家有所幫助。
一、瀏覽器的打印功能菜單
這種方案的優(yōu)勢是不需要對瀏覽器作任何擴(kuò)充,是最簡單的辦法,但問題也最多,如:
不能精確分頁。瀏覽器一般是根據(jù)用戶設(shè)置的頁面大小,web頁面的內(nèi)容多少,來自行決定分頁位置,程序員很難控制。會(huì)有頁腳頁眉干擾。
不能準(zhǔn)確對齊邊邊距及打印文字。
不能解決連續(xù)打印。比如,不是僅打印一張票據(jù),而是連續(xù)一次打印若干個(gè)票據(jù)。
二、使用webbrowser控件+ javascript
這實(shí)際上,是瀏覽器打印功能菜單的一種程序調(diào)用,與打印功能菜單沒什么兩樣。分頁的問題仍然存在,只不過,可以讓用戶不用去點(diǎn)菜單,直接在網(wǎng)頁中的一個(gè)按鈕,或一個(gè)鏈接里面調(diào)用罷了。
三 、使用print css
這是一種最理想的實(shí)現(xiàn)web套打的方法。這種方法通過在html文檔中,嵌入打印相關(guān)的css樣式,來實(shí)現(xiàn)對html文檔輸出打印的控制,比如設(shè)置紙張大小,紙張縱橫方向,打印邊距,分頁等。顯而易見,這種方式成本小,不需要下載任何插件,而且跨平臺(tái)性非常好。print css推出已經(jīng)有些時(shí)日,但遺憾的是,至今沒有一個(gè)廠商的瀏覽器很好地實(shí)現(xiàn)了這些標(biāo)準(zhǔn),這使得程序員目前還不能利用print css進(jìn)行實(shí)際的開發(fā)。關(guān)于打印css,參見http://css-discuss.incutio.com/?page=PrintStylesheets
四 、使用PDF文件
用這種方式,就是從服務(wù)器端下載一個(gè)pdf文件流,在IE中用adobe插件打開,然后用adobe的打印菜單進(jìn)行打印,雖然這種方案,也能實(shí)現(xiàn)精確套打,但需要下載adobe插件。這是國外報(bào)表工具經(jīng)常推薦的一種打印方法,但在pdf不那么普及的中國,這種方案不是最好選擇。
五 、采用純ActiveX
這種方案就是下載一個(gè)控件,票據(jù)的數(shù)據(jù)不再以html方式呈現(xiàn),而是呈現(xiàn)在ActiveX中。這種方案的優(yōu)點(diǎn)是打印的精確度高,分頁的可控性好,但缺點(diǎn)也是很明顯的,嵌入ActiveX控件破壞了web應(yīng)用的整體html風(fēng)格,且這樣的控件比較大(一般超過1M),下載頗費(fèi)時(shí)間)。市場上的非java類報(bào)表產(chǎn)品,一般都采用這種方案。
六 、采用Applet方式
采用Applet方式,分頁或精確打印,都可以做到完美,但缺點(diǎn)也很明顯,表現(xiàn)在:
安裝Applet成本巨大。需要下載十幾M的文件。
打印報(bào)表時(shí),需要重新向服務(wù)器檢索數(shù)據(jù),效率低。因?yàn)锳pplet方案,一般采用html方式呈現(xiàn)數(shù)據(jù),打印時(shí)Applet必須向服務(wù)器檢索同一張票據(jù)的數(shù)據(jù),看上去,是打印了當(dāng)前頁的票據(jù),實(shí)際上,Applet根本不會(huì)用當(dāng)前html頁的數(shù)據(jù)來打印,而是向服務(wù)器下載數(shù)據(jù)到Applet中來打印。也就是說,打印的話,必須兩次請求,一次html呈現(xiàn),一次用來打印。
不能解決連續(xù)打印。比如,不是僅打印一張票據(jù),而是連續(xù)一次打印若干個(gè)票據(jù)。
不能解決打印機(jī)設(shè)置問題,如存在多臺(tái)打印機(jī)時(shí),總是需要手工選擇,打印到哪一臺(tái)打印機(jī)。
市場上java類的報(bào)表工具,一般推薦Applet方式來實(shí)現(xiàn)打印。
七 、輕量級(jí)的ActiveX打印方式
-----ScriptX-----
ScriptX的免費(fèi)版本好點(diǎn),已經(jīng)能滿足大部分的需求.
MeadCo's ScriptX控件有兩種使用方式,一種是做為免費(fèi)版本使用,一種是做為收費(fèi)版本使用,免費(fèi)版本支持的功能要少些,不過最重要也是最常用的頁面設(shè)置,它還是提供的,因此使用免費(fèi)版本不過這兩個(gè)版本用的都是同一個(gè)cab文件,只不過在代碼設(shè)置中有一些不同。
-----PAZU (四方)-----
PAZU 個(gè)人或者商業(yè)使用均真正免費(fèi)授權(quán),無IP或者域名限制。
PAZU自2009年6月起采用免費(fèi)的許可,申請時(shí),您必須有確定的IP地址或者域名(主機(jī)名),PAZU是綁定IP或者域名的,IP或域名尚未確定的我們不能頒發(fā)授權(quán),另外,授權(quán)一經(jīng)頒發(fā)就不能修改綁定。 綁定的IP和域名必須是最終用戶的,所以,最終用戶的應(yīng)用網(wǎng)站必須和4Fang網(wǎng)站做好鏈接,否則 PAZU會(huì)因?yàn)闊o法驗(yàn)證授權(quán)的合法性而不能正常工作(內(nèi)網(wǎng)應(yīng)用除外)。
企業(yè)可以購買開發(fā)集成版(適合項(xiàng)目集成或者產(chǎn)品開發(fā)公司,提供KeyGen工具,自己生成許可授權(quán),不限制發(fā)行)
-----jatoolsPrinter(杰表.打印控件)-----
免費(fèi)版本只能在192.168.*** 網(wǎng)段使用,2.0之前的版本有免費(fèi)版本,2.0之后是收費(fèi)的。目前最新版本是4.2.他們可以通過web腳本來選擇輸出打印機(jī),紙張大小,打印方向等,不必每次手工設(shè)定。
價(jià)格請看:http://www.jatools.com/print/howtobuy.htm
對于簡單的打印,我們用IE的功能就可以了,對于需要復(fù)雜的設(shè)置的,建議使用輕量級(jí)的ActiveX打印方式。在接下來的系列教程里,我們會(huì)一一介紹。
---------------------------------------二 使用IE的打印功能進(jìn)行一般的網(wǎng)頁打印-----------------------------
在我們進(jìn)行web開發(fā)的時(shí)候,通常會(huì)需要用到打印,然而,由于web技術(shù)的限制及考慮到安全的問題,一直以來,web打印的功能都是非常弱的,對此,我們也只能接受。也許你在開發(fā)過程中經(jīng)常會(huì)遇見客戶對你說,“你們系統(tǒng)的打印太差了,你看看excel的打印多好啊,”,面對這樣的用戶,我們除了苦笑,還能說什么呢?如果你對著他們?nèi)ソ忉屖裁词荁S架構(gòu),什么是CS架構(gòu),不但不能夠解決問題,反而會(huì)招致用戶的反感。
那么,我們是不是就什么都不能做了呢?答案當(dāng)然是否定的。利用現(xiàn)有的web技術(shù),再加上針對求的靈活實(shí)現(xiàn),我們也可以做出漂亮的打印出來。
在接下來的幾篇文章里,我將分別介紹幾種打印的方法或技術(shù)。這些方法有的很簡單,有的稍微復(fù)雜一點(diǎn)。我們還是從基礎(chǔ)做起,先了解最簡單的打印技術(shù),然后再一步一步提高,這樣也有利于消化技術(shù)。
本篇內(nèi)容講述利用IE提供的簡單的打印功能,進(jìn)行打印的設(shè)置以及打印。
在IE里打印,我們可以通過javascript來調(diào)用window.print()函數(shù)實(shí)現(xiàn)。下面是一個(gè)簡單的代碼示例。
基于web的套打,難度在于要將瀏覽器中呈現(xiàn)的html,精確地打印到票據(jù)中,而且能夠?qū)崿F(xiàn)對分頁位置的控制。下面就ie瀏覽器所能采用的套打解決方案,來個(gè)匯總分析,希望對大家有所幫助。
一、瀏覽器的打印功能菜單
這種方案的優(yōu)勢是不需要對瀏覽器作任何擴(kuò)充,是最簡單的辦法,但問題也最多,如:
不能精確分頁。瀏覽器一般是根據(jù)用戶設(shè)置的頁面大小,web頁面的內(nèi)容多少,來自行決定分頁位置,程序員很難控制。會(huì)有頁腳頁眉干擾。
不能準(zhǔn)確對齊邊邊距及打印文字。
不能解決連續(xù)打印。比如,不是僅打印一張票據(jù),而是連續(xù)一次打印若干個(gè)票據(jù)。
二、使用webbrowser控件+ javascript
這實(shí)際上,是瀏覽器打印功能菜單的一種程序調(diào)用,與打印功能菜單沒什么兩樣。分頁的問題仍然存在,只不過,可以讓用戶不用去點(diǎn)菜單,直接在網(wǎng)頁中的一個(gè)按鈕,或一個(gè)鏈接里面調(diào)用罷了。
三 、使用print css
這是一種最理想的實(shí)現(xiàn)web套打的方法。這種方法通過在html文檔中,嵌入打印相關(guān)的css樣式,來實(shí)現(xiàn)對html文檔輸出打印的控制,比如設(shè)置紙張大小,紙張縱橫方向,打印邊距,分頁等。顯而易見,這種方式成本小,不需要下載任何插件,而且跨平臺(tái)性非常好。print css推出已經(jīng)有些時(shí)日,但遺憾的是,至今沒有一個(gè)廠商的瀏覽器很好地實(shí)現(xiàn)了這些標(biāo)準(zhǔn),這使得程序員目前還不能利用print css進(jìn)行實(shí)際的開發(fā)。關(guān)于打印css,參見http://css-discuss.incutio.com/?page=PrintStylesheets
四 、使用PDF文件
用這種方式,就是從服務(wù)器端下載一個(gè)pdf文件流,在IE中用adobe插件打開,然后用adobe的打印菜單進(jìn)行打印,雖然這種方案,也能實(shí)現(xiàn)精確套打,但需要下載adobe插件。這是國外報(bào)表工具經(jīng)常推薦的一種打印方法,但在pdf不那么普及的中國,這種方案不是最好選擇。
五 、采用純ActiveX
這種方案就是下載一個(gè)控件,票據(jù)的數(shù)據(jù)不再以html方式呈現(xiàn),而是呈現(xiàn)在ActiveX中。這種方案的優(yōu)點(diǎn)是打印的精確度高,分頁的可控性好,但缺點(diǎn)也是很明顯的,嵌入ActiveX控件破壞了web應(yīng)用的整體html風(fēng)格,且這樣的控件比較大(一般超過1M),下載頗費(fèi)時(shí)間)。市場上的非java類報(bào)表產(chǎn)品,一般都采用這種方案。
六 、采用Applet方式
采用Applet方式,分頁或精確打印,都可以做到完美,但缺點(diǎn)也很明顯,表現(xiàn)在:
安裝Applet成本巨大。需要下載十幾M的文件。
打印報(bào)表時(shí),需要重新向服務(wù)器檢索數(shù)據(jù),效率低。因?yàn)锳pplet方案,一般采用html方式呈現(xiàn)數(shù)據(jù),打印時(shí)Applet必須向服務(wù)器檢索同一張票據(jù)的數(shù)據(jù),看上去,是打印了當(dāng)前頁的票據(jù),實(shí)際上,Applet根本不會(huì)用當(dāng)前html頁的數(shù)據(jù)來打印,而是向服務(wù)器下載數(shù)據(jù)到Applet中來打印。也就是說,打印的話,必須兩次請求,一次html呈現(xiàn),一次用來打印。
不能解決連續(xù)打印。比如,不是僅打印一張票據(jù),而是連續(xù)一次打印若干個(gè)票據(jù)。
不能解決打印機(jī)設(shè)置問題,如存在多臺(tái)打印機(jī)時(shí),總是需要手工選擇,打印到哪一臺(tái)打印機(jī)。
市場上java類的報(bào)表工具,一般推薦Applet方式來實(shí)現(xiàn)打印。
七 、輕量級(jí)的ActiveX打印方式
-----ScriptX-----
ScriptX的免費(fèi)版本好點(diǎn),已經(jīng)能滿足大部分的需求.
MeadCo's ScriptX控件有兩種使用方式,一種是做為免費(fèi)版本使用,一種是做為收費(fèi)版本使用,免費(fèi)版本支持的功能要少些,不過最重要也是最常用的頁面設(shè)置,它還是提供的,因此使用免費(fèi)版本不過這兩個(gè)版本用的都是同一個(gè)cab文件,只不過在代碼設(shè)置中有一些不同。
-----PAZU (四方)-----
PAZU 個(gè)人或者商業(yè)使用均真正免費(fèi)授權(quán),無IP或者域名限制。
PAZU自2009年6月起采用免費(fèi)的許可,申請時(shí),您必須有確定的IP地址或者域名(主機(jī)名),PAZU是綁定IP或者域名的,IP或域名尚未確定的我們不能頒發(fā)授權(quán),另外,授權(quán)一經(jīng)頒發(fā)就不能修改綁定。 綁定的IP和域名必須是最終用戶的,所以,最終用戶的應(yīng)用網(wǎng)站必須和4Fang網(wǎng)站做好鏈接,否則 PAZU會(huì)因?yàn)闊o法驗(yàn)證授權(quán)的合法性而不能正常工作(內(nèi)網(wǎng)應(yīng)用除外)。
企業(yè)可以購買開發(fā)集成版(適合項(xiàng)目集成或者產(chǎn)品開發(fā)公司,提供KeyGen工具,自己生成許可授權(quán),不限制發(fā)行)
-----jatoolsPrinter(杰表.打印控件)-----
免費(fèi)版本只能在192.168.*** 網(wǎng)段使用,2.0之前的版本有免費(fèi)版本,2.0之后是收費(fèi)的。目前最新版本是4.2.他們可以通過web腳本來選擇輸出打印機(jī),紙張大小,打印方向等,不必每次手工設(shè)定。
價(jià)格請看:http://www.jatools.com/print/howtobuy.htm
對于簡單的打印,我們用IE的功能就可以了,對于需要復(fù)雜的設(shè)置的,建議使用輕量級(jí)的ActiveX打印方式。在接下來的系列教程里,我們會(huì)一一介紹。
---------------------------------------二 使用IE的打印功能進(jìn)行一般的網(wǎng)頁打印-----------------------------
在我們進(jìn)行web開發(fā)的時(shí)候,通常會(huì)需要用到打印,然而,由于web技術(shù)的限制及考慮到安全的問題,一直以來,web打印的功能都是非常弱的,對此,我們也只能接受。也許你在開發(fā)過程中經(jīng)常會(huì)遇見客戶對你說,“你們系統(tǒng)的打印太差了,你看看excel的打印多好啊,”,面對這樣的用戶,我們除了苦笑,還能說什么呢?如果你對著他們?nèi)ソ忉屖裁词荁S架構(gòu),什么是CS架構(gòu),不但不能夠解決問題,反而會(huì)招致用戶的反感。
那么,我們是不是就什么都不能做了呢?答案當(dāng)然是否定的。利用現(xiàn)有的web技術(shù),再加上針對求的靈活實(shí)現(xiàn),我們也可以做出漂亮的打印出來。
在接下來的幾篇文章里,我將分別介紹幾種打印的方法或技術(shù)。這些方法有的很簡單,有的稍微復(fù)雜一點(diǎn)。我們還是從基礎(chǔ)做起,先了解最簡單的打印技術(shù),然后再一步一步提高,這樣也有利于消化技術(shù)。
本篇內(nèi)容講述利用IE提供的簡單的打印功能,進(jìn)行打印的設(shè)置以及打印。
在IE里打印,我們可以通過javascript來調(diào)用window.print()函數(shù)實(shí)現(xiàn)。下面是一個(gè)簡單的代碼示例。
- <input type='button' value='打印' onclick='javascript:window.print()'/>
<input type='button' value='打印' onclick='javascript:window.print()'/>
點(diǎn)擊“打印”后,即可彈出打印窗口,如下圖

通過這個(gè)函數(shù),可以實(shí)現(xiàn)最簡單的打印功能。如果我們要對紙張,頁邊距進(jìn)行設(shè)置,那該怎么做呢? 我們知道,我們可以方便地通過 Internet Explorer 用戶界面更改頁邊距、頁眉和頁腳設(shè)置和默認(rèn) Internet Explorer 打印機(jī),IE也提供了一個(gè)叫WebBrowser 控件來供我們調(diào)用,通過調(diào)用,可以在頁面上調(diào)出打印的設(shè)置窗口,在設(shè)置窗口里,用戶可以更改頁邊距、頁眉和頁腳設(shè)置等。(但是,在 Internet Explorer 或 WebBrowser 控件下沒有以編程方式更改這些設(shè)置的方法。在本系列教程的第三篇,我將介紹如何在頁面上通過編程的方式來更改設(shè)置。)我們可以在頁面上輸入如下代碼來調(diào)用WebBrowser 控件。
- <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" id=wb name=wb ></OBJECT>
- <input type='button' value='打印' onclick='javascript:wb.ExecWB(6,1)'/>
- <input type='button' value='打印預(yù)覽' onclick='javascript:wb.ExecWB(7,1)'/>
- <input type='button' value='頁面設(shè)置' onclick='javascript:wb.ExecWB(8,1)'/>
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" id=wb name=wb ></OBJECT> <input type='button' value='打印' onclick='javascript:wb.ExecWB(6,1)'/> <input type='button' value='打印預(yù)覽' onclick='javascript:wb.ExecWB(7,1)'/> <input type='button' value='頁面設(shè)置' onclick='javascript:wb.ExecWB(8,1)'/>
上例中的OBJECT就是IE提供的打印控件,叫WebBrowser,我們在網(wǎng)頁中可以用我們設(shè)置的id或name來引用它。
這個(gè)對象有很用法,其中涉及到打印的有下面三項(xiàng)。
wb.ExecWB(6,1) 打印
wb.ExecWB(7,1) 打印預(yù)覽
wb.ExecWB(8,1) 打印頁面設(shè)置
點(diǎn)擊“打印”按鈕,即可彈出和window.print()函數(shù)一樣的窗口。 點(diǎn)擊打印預(yù)覽,即可預(yù)覽當(dāng)前頁面。

點(diǎn)擊“頁面設(shè)置”,即可彈出頁面設(shè)置窗口,在設(shè)置窗口里,可以對邊距,頁眉等進(jìn)行詳細(xì)設(shè)置。

通過以上三個(gè)功能,我們就可以進(jìn)行簡單的打印和設(shè)置了,對于一般的打印需求來說基本足夠。
這里需要說明的是,“頁面設(shè)置”中的各個(gè)值,是存儲(chǔ)在用戶的注冊表中。
下面是 Microsoft Internet Explorer 訪問打印設(shè)置的方式:
對于頁邊距,Microsoft Internet Explorer 首先嘗試從以下注冊表項(xiàng)中獲取值:
- HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetup
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetup
如果沒有此項(xiàng),Internet Explorer 將通過從以下注冊表項(xiàng)中復(fù)制值來創(chuàng)建此項(xiàng):
- HKEY_LOCAL_MACHINESoftwareMicrosoftInternet ExplorerPageSetup
HKEY_LOCAL_MACHINESoftwareMicrosoftInternet ExplorerPageSetup
如果沒有此項(xiàng),將提供默認(rèn)值。
對于頁眉和頁腳,將從以下項(xiàng)中獲取值:
- HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetup
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetup
如果沒有此項(xiàng),將提供默認(rèn)值。
頁邊距的默認(rèn)值是 0.75,
對于 Internet Explorer 默認(rèn)打印機(jī),默認(rèn)值將從以下項(xiàng)提供:
- HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetupprinter
HKEY_CURRENT_USERSoftwareMicrosoftInternet ExplorerPageSetupprinter
請注意,這些值作用于整個(gè)系統(tǒng),影響著當(dāng)前用戶的 WebBrowser 控件和 Internet Explorer 的所有實(shí)例。因此,如果你設(shè)置了第一張網(wǎng)頁的頁眉是“AJava.org”,那么第二張網(wǎng)頁的頁眉也是它。
那么,有沒有一種辦法,能夠在程序里對這些選項(xiàng)進(jìn)行設(shè)置,而不需要用戶每次都手工來設(shè)置呢?請看下面.
------------------------------------三 使用WScript.Shell通過編程方式進(jìn)行復(fù)雜的WEB打印設(shè)置-----------------------------
上篇文章介紹了如何進(jìn)行簡單的打印和設(shè)置,適用與一般的打印要求,如互聯(lián)網(wǎng)上網(wǎng)站的打印。然而,在我們?yōu)檎蚱髽I(yè)開發(fā)系統(tǒng)時(shí),打印需求較為復(fù)雜,一般的打印設(shè)置可能滿足不了用戶需求,特別是為了用戶良好的可操作性,不能要求用戶在打印時(shí)都手工進(jìn)行打印設(shè)置,這時(shí),就需要我們在程序里實(shí)現(xiàn)對打印的預(yù)設(shè)置,用戶只需要點(diǎn)擊打印就可以了。
那么如何實(shí)現(xiàn)可編程的打印設(shè)置呢?有很多種方法,本文將介紹WScript.Shell來進(jìn)行打印設(shè)置。
使用WScript.Shell,必須要求客戶IE允許 Activex進(jìn)行交互。如果是你開發(fā)的系統(tǒng)是針對于特定的用戶群,如一個(gè)政府單位,或一個(gè)企業(yè),那么建議你要求客戶將你的系統(tǒng)加入可信任站點(diǎn)。
從《[AJava原創(chuàng)]WEB打印系列教程之二--使用IE的打印功能進(jìn)行一般的網(wǎng)頁打印》一文中,我們知道,頁邊距,頁眉,頁腳是存儲(chǔ)在注冊表里的。因此,接下來,我們主要是針對注冊表進(jìn)行可編程設(shè)置。
請看如下代碼。
- <title>Ajava.orgWEB打印系列教程</title>
- <script language="JavaScript" type="text/javascript">
- //定義注冊表位置
- var HKEY_Path="HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup\";
- //name的值可為header(頁眉),footer(頁腳),margin_bottom(下邊距),margin_left(左邊距),margin_right(右邊距),margin_top(上邊距)。
- //
- function PageSetup(name,value) {
- try {
- var Wsh=new ActiveXObject("WScript.Shell");
- Wsh.RegWrite(HKEY_Path+name,value);
- //修改注冊表值
- }
- catch(e){
- alert('需要運(yùn)行運(yùn)行Activex才能進(jìn)行打印設(shè)置。');
- }
- }
- </script>
<title>Ajava.orgWEB打印系列教程</title> <script language="JavaScript" type="text/javascript"> //定義注冊表位置 var HKEY_Path="HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup\"; //name的值可為header(頁眉),footer(頁腳),margin_bottom(下邊距),margin_left(左邊距),margin_right(右邊距),margin_top(上邊距)。 // function PageSetup(name,value) { try { var Wsh=new ActiveXObject("WScript.Shell"); Wsh.RegWrite(HKEY_Path+name,value); //修改注冊表值 } catch(e){ alert('需要運(yùn)行運(yùn)行Activex才能進(jìn)行打印設(shè)置。'); } } </script>
上面的代碼是本道寫的一個(gè)簡單的函數(shù),它可以對header(頁眉),footer(頁腳),margin_bottom(下邊距),margin_left(左邊距),margin_right(右邊距),margin_top(上邊距)進(jìn)行設(shè)置。
如果你想對一個(gè)要打印的網(wǎng)頁通過編程方式進(jìn)行以上設(shè)置,只需要調(diào)用PageSetup例如:
- <script language="JavaScript" type="text/javascript">
- PageSetup('header','Ajava.org');
- PageSetup('footer','Ajava.orgWEB打印系列教程');
- </script>
<script language="JavaScript" type="text/javascript"> PageSetup('header','Ajava.org'); PageSetup('footer','Ajava.orgWEB打印系列教程'); </script>
如果你沒有把站點(diǎn)加到可信任站點(diǎn),那么在執(zhí)行上面的代碼時(shí),可能會(huì)彈出一個(gè)對話框。如下。

選擇“是”,程序即對打印進(jìn)行了設(shè)置。如果你打開頁面設(shè)置窗口,你會(huì)發(fā)現(xiàn),頁眉,頁腳,已經(jīng)被修改了

對于頁邊距的值,你只需要根據(jù)你自己的版面要求進(jìn)行設(shè)置成相關(guān)的值就可以了。下面主要講一下頁眉頁腳的詳細(xì)值。
通常我們會(huì)在頁眉加上網(wǎng)頁的標(biāo)題,在頁腳加上頁面代碼,日期等等,我們該如何設(shè)置呢?
下面就是可供我們使用的一些項(xiàng)目及值。
鍵入 要打印
&w 窗口標(biāo)題
&u 網(wǎng)頁地址 (URL)
&d 短日期格式(由“控制面板”中的“區(qū)域設(shè)置”指定)
&D 長日期格式(由“控制面板”中的“區(qū)域設(shè)置”指定)
&t 由“控制面板”中的“區(qū)域設(shè)置”指定的時(shí)間格式
&T 24 小時(shí)時(shí)間格式
&p 當(dāng)前頁號(hào)
&P 網(wǎng)頁總數(shù)
&& 單個(gè) & 號(hào) (&)
&b 緊跟在這些字符之后的文本居中打印。
&b&b 緊跟在第一個(gè) "&b" 之后的文本居中打印,跟在第二個(gè) "&b" 之后的文本按右對齊方式打印。
光看這些說明可能有些不直觀,我們還是來點(diǎn)例子吧。
- <script language="JavaScript" type="text/javascript">
- PageSetup('header','&b&w&b&D');
- PageSetup('footer','AJava.org網(wǎng)站出品&b&w&b第&p頁,共&P頁');
- </script>
<script language="JavaScript" type="text/javascript"> PageSetup('header','&b&w&b&D'); PageSetup('footer','AJava.org網(wǎng)站出品&b&w&b第&p頁,共&P頁'); </script>
運(yùn)行后頁眉如下圖。

頁腳如下圖。

對于其他的參數(shù)都很好理解,這里我只解釋一下如何居左,居中,居右。
要想居中,使用“&b”,緊跟在這些字符之后的文本居中打印。例如“&b教程”,那么“教程”就會(huì)居中。
要想居右,就在居中的后面再加上“&b”。例如“&b教程&b打印系列”,那么“教程”就會(huì)居中,打印系列就會(huì)居右。
如果你不想居中,只要居右,“&b&b打印系列”這樣就可以了。
第一個(gè)“&b”前面的文字都是居左。
通過WScript.Shell的使用,我們已經(jīng)可以通過編程方式進(jìn)行打印設(shè)置了,應(yīng)該說,普通的打印需求都可以實(shí)現(xiàn)了。但是,在日常的打印里,還有一種特色的需求,那就是分頁,對于分頁打印,我們該如何實(shí)現(xiàn)呢?請看下面.
-------------------------------------四 簡單的WEB打印分頁設(shè)置-----------------------------
在講述如何分頁打印之前,我們有必要先了解一下css中不為人知的一些用法。
css里media的使用
我們在網(wǎng)頁里引用外部的css文件時(shí),通常是用如下的代碼:
- <link rel="stylesheet" type="text/css" href="mycss.css">
<link rel="stylesheet" type="text/css" href="mycss.css">
實(shí)際上,上面的link對象里,我們是省略了一個(gè)叫“media”的屬性,這個(gè)屬性指定樣式表規(guī)則用于指定的設(shè)備類型。它有如下值可用:
all-- 用于所有設(shè)備類型
aural-- 用于語音和音樂合成器
braille-- 用于觸覺反饋設(shè)備
embossed-- 用于凸點(diǎn)字符(盲文)印刷設(shè)備
handheld-- 用于小型或手提設(shè)備
print-- 用于打印機(jī)
projection-- 用于投影圖像,如幻燈片
screen-- 用于計(jì)算機(jī)顯示器
tty-- 用于使用固定間距字符格的設(shè)備。如電傳打字機(jī)和終端
tv-- 用于電視類設(shè)備
這么多的值,并不是每個(gè)都可用,因?yàn)闉g覽器廠商并沒有全部實(shí)現(xiàn)它們。
在IE里面,可用的值有all,print,screen三個(gè)。上面的代碼里,我們沒有使用“media”,實(shí)際上IE或其他瀏覽器是用了“all”這個(gè)值。“screen”,用于顯示器,也就是我們一般看到的效果。“print”,用于打印的效果。
也就是說,我們沒有指定“media”,那么我們看到的效果和打印的效果,它們用的都是同樣的css文件。如果我們指定了一個(gè)“screen”,又指定了一個(gè)“print”,那么在打印時(shí)就會(huì)用“print”指定的css來渲染網(wǎng)頁并打印。例如一個(gè)網(wǎng)頁里有如下代碼:
- <link rel="stylesheet" type="text/css" media="screen" href="mycss.css">
- <link rel="stylesheet" type="text/css" media="print" href="myprintcss.css">
<link rel="stylesheet" type="text/css" media="screen" href="mycss.css"> <link rel="stylesheet" type="text/css" media="print" href="myprintcss.css">
那就表示,我們通過IE看到的網(wǎng)頁,用到的css文件是mycss.css,而通過IE打印時(shí)用到的css文件則是myprintcss.css。想到什么了嗎?對,我們可以通過print的設(shè)置,來讓網(wǎng)頁上的一些不需要打印的內(nèi)容隱藏起來,比如,打印按鈕。實(shí)際上,media還可以這樣使用:
- <style media=print>
- //這里定義你要打印時(shí)用到的css類
- </style>
<style media=print> //這里定義你要打印時(shí)用到的css類 </style>
或者這樣使用:
- <style>
- @media print {
- //這里定義你要打印時(shí)用到的css類
- }
- </style>
<style> @media print { //這里定義你要打印時(shí)用到的css類 } </style>
css里用于打印的屬性
page-break-after : auto | always | avoid | left | right | null
參數(shù):
auto : 假如需要在對象之后插入頁分割符
always :始終在對象之后插入頁分割符
avoid : 避免在對象后面插入頁分割符
left : 在對象后面插入頁分割符直到它到達(dá)一個(gè)空白的左頁邊
right :在對象后面插入頁分割符直到它到達(dá)一個(gè)空白的右頁邊
null : 空值。IE5用來取消頁分割符設(shè)置
這個(gè)page-break-after,主要用來在打印時(shí)插入一個(gè)分頁符,分頁就靠它了。它還有個(gè)雙胞胎的兄弟,叫page-break-before,參數(shù)和它一樣,看名字即知道它是用來在對象之前插入分頁符。
示例
在理解了以上兩個(gè)css用法后,下面通過一個(gè)示例來說明如何分頁。
- <HTML>
- <HEAD>
- <TITLE> AJava.org書城訂單明細(xì)</TITLE>
- <style>
- @media print{
- .toolbar{display:none;}
- }
- .toolbar{border:1px solid #6A9BFA;background:#E8F7E8;}
- .paging{page-break-after :always}
- td{font-size:12px;color:#000000;}
- </style>
- </HEAD>
- <BODY>
- <div class='toolbar'>
- <OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
- </OBJECT>
- <input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
- <input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
- <input type=button value=頁面設(shè)置 onclick=document.all.WebBrowser.ExecWB(8,1)>
- <input type=button value=打印預(yù)覽 onclick=document.all.WebBrowser.ExecWB(7,1)>
- </div>
- <TABLE width="100%" border="0"><THEAD style="display:table-header-group;font-weight:bold">
- <TR><TD colspan="5" align="center" >AJava.org書城訂單明細(xì)</TD>
- </TR>
- <TR>
- <TD>書名</TD>
- <TD>價(jià)格</TD>
- <TD>送貨地址</TD>
- <TD>送貨時(shí)間</TD>
- <TD>狀態(tài)</TD>
- </TR>
- </THEAD>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR class='paging'>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR >
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TR>
- <TD>《Java 編程思想》</TD>
- <TD>¥60.00</TD>
- <TD><B>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</B></TD>
- <TD>2009-8-8</TD>
- <TD>已送達(dá)</TD>
- </TR>
- <TFOOT style="display:table-footer-group;font-weight:bold">
- <TR>
- <TD colspan="5" align="left" >以上內(nèi)容純屬虛構(gòu)</TD>
- </TR>
- </TFOOT>
- </TABLE>
- </BODY>
- </HTML>
<HTML> <HEAD> <TITLE> AJava.org書城訂單明細(xì)</TITLE> <style> @media print{ .toolbar{display:none;} } .toolbar{border:1px solid #6A9BFA;background:#E8F7E8;} .paging{page-break-after :always} td{font-size:12px;color:#000000;} </style> </HEAD> <BODY> <div class='toolbar'> <OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0> </OBJECT> <input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)> <input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)> <input type=button value=頁面設(shè)置 onclick=document.all.WebBrowser.ExecWB(8,1)> <input type=button value=打印預(yù)覽 onclick=document.all.WebBrowser.ExecWB(7,1)> </div> <TABLE width="100%" border="0"><THEAD style="display:table-header-group;font-weight:bold"> <TR><TD colspan="5" align="center" >AJava.org書城訂單明細(xì)</TD> </TR> <TR> <TD>書名</TD> <TD>價(jià)格</TD> <TD>送貨地址</TD> <TD>送貨時(shí)間</TD> <TD>狀態(tài)</TD> </TR> </THEAD> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR class='paging'> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR > <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TR> <TD>《Java 編程思想》</TD> <TD>¥60.00</TD> <TD><B>伊拉克巴格達(dá)總統(tǒng)府9棟8單元7門654室</B></TD> <TD>2009-8-8</TD> <TD>已送達(dá)</TD> </TR> <TFOOT style="display:table-footer-group;font-weight:bold"> <TR> <TD colspan="5" align="left" >以上內(nèi)容純屬虛構(gòu)</TD> </TR> </TFOOT> </TABLE> </BODY> </HTML>
以上代碼在IE中瀏覽的效果如下圖。

點(diǎn)擊打印預(yù)覽,第一頁如下圖。

第二頁如下圖。

我們發(fā)現(xiàn),在我們加入分頁符的那行后面,自動(dòng)被分到第二頁了。這個(gè)例子還有一個(gè)功能,就是每頁都有相同的表頭和表尾,這是利用display:table-header-group和display:table-footer-group來實(shí)現(xiàn)的。
本例分頁的效果,主要取決于表格里每行的高度,如果有某行很高,則會(huì)導(dǎo)致一些問題。如果每行都是固定高度,那么用這種方法則是最簡單方便的。
到現(xiàn)在為止,我們講述的都是利用IE本身提供的控件在進(jìn)行打印設(shè)置,這種方法有它的局限:不能夠以編程的方式進(jìn)行頁面方向的設(shè)置,而這有時(shí)很重要。接下來本道將在《[AJava原創(chuàng)]WEB打印系列教程之五--使用ScriptX進(jìn)行復(fù)雜的WEB打印設(shè)置》中進(jìn)行介紹。
----------------------------------------------------五 使用ScriptX進(jìn)行復(fù)雜的WEB打印設(shè)置-------------------------------
ScriptX是一個(gè)叫MeadCo的國外公司的產(chǎn)品,它分為基礎(chǔ)版(免費(fèi))和高級(jí)版(收費(fèi)),基礎(chǔ)版可以對 頁眉,頁腳,頁邊距,紙張方向進(jìn)行設(shè)置。高級(jí)版有一些額外的功能,由于是收費(fèi)的,需要付費(fèi)以后才能用到你系統(tǒng)中,這里就不介紹了。
ScriptX的最新版是6.4,可以在以下地址下載。ScriptX 6.4打印控件下載
下載以后是一個(gè)smsx.cab文件,把它放到你的應(yīng)用目錄下,例如/study/smsx.cab。
下面通過一個(gè)例子來講解它的功能和使用。
- <html>
- <object id=factory style="display:none"
- classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
- codebase="http://ajava.org/study/smsx.cab#Version=6,4,438,06">
- </object>
- <script>
- function printWindow() {
- factory.printing.header = "使用ScriptX進(jìn)行打印設(shè)置";
- factory.printing.footer = "AJava.org出品";
- factory.printing.portrait = false;//設(shè)為true就是橫向
- factory.printing.leftMargin = 1.0;
- factory.printing.topMargin = 1.0;
- factory.printing.rightMargin = 1.0;
- factory.printing.bottomMargin = 1.0;
- }
- printWindow();
- </script>
- <input type="button" value="打印本頁" onclick="factory.printing.Print(true)">
- <input type="button" value="打印目標(biāo)框架頁" onclick="factory.printing.Print(true, idFrame)">
- <input type="button" value="打印設(shè)置..." onclick="factory.printing.PageSetup()">
- <input type="button" value="打印預(yù)覽..." onclick="factory.printing.Preview()">
- <iframe name="idFrame" width="100%" height="60%" src="http://www.baidu.com">
- </html>
<html> <object id=factory style="display:none" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="http://ajava.org/study/smsx.cab#Version=6,4,438,06"> </object> <script> function printWindow() { factory.printing.header = "使用ScriptX進(jìn)行打印設(shè)置"; factory.printing.footer = "AJava.org出品"; factory.printing.portrait = false;//設(shè)為true就是橫向 factory.printing.leftMargin = 1.0; factory.printing.topMargin = 1.0; factory.printing.rightMargin = 1.0; factory.printing.bottomMargin = 1.0; } printWindow(); </script> <input type="button" value="打印本頁" onclick="factory.printing.Print(true)"> <input type="button" value="打印目標(biāo)框架頁" onclick="factory.printing.Print(true, idFrame)"> <input type="button" value="打印設(shè)置..." onclick="factory.printing.PageSetup()"> <input type="button" value="打印預(yù)覽..." onclick="factory.printing.Preview()"> <iframe name="idFrame" width="100%" height="60%" src="http://www.baidu.com"> </html>
factory.printing.Print(true),這里設(shè)置成true或false,我沒有發(fā)現(xiàn)有什么不同的效果。它的原意是直接打印。
factory.printing.Print(true, idFrame),第一個(gè)參數(shù)同上,第二個(gè)參數(shù)是目標(biāo)框架的name。
factory.printing.PageSetup()是調(diào)出頁面設(shè)置窗口。
factory.printing.Preview()是調(diào)出頁面預(yù)覽窗口。
其他的代碼很簡單,不需要解釋什么。
ScriptX有一點(diǎn)不好的地方,在IE里裝了這個(gè)控件以后,打印預(yù)覽時(shí)的界面是英文的了。如果你的用戶對此會(huì)反感,建議你不要用ScriptX??墒怯靡郧敖榻B的幾種方法,都不能以編程方式進(jìn)行紙張方向的設(shè)置,那該怎么辦呢?請看《[AJava原創(chuàng)]WEB打印系列教程之六--使用jatoolsPrinter控件進(jìn)行WEB打印設(shè)置》
----------------------------------------六 使用jatoolsPrinter控件進(jìn)行WEB打印設(shè)置-------------------------------
jatoolsPrinter 是一款實(shí)現(xiàn)網(wǎng)頁套打的免費(fèi)工具。該工具的特點(diǎn)是可以直接對web頁面進(jìn)行精確的分頁打印,這不僅使“會(huì)設(shè)計(jì)網(wǎng)頁就會(huì)做網(wǎng)頁套打”成為可能,也使項(xiàng)目經(jīng)理們擺脫了預(yù)算緊張的壓力。jatoolsPrinter通過在網(wǎng)頁中嵌入控件,解決了web客戶端精確打印,批量打印,打印配置自動(dòng)保留等問題。
由于jatoolsPrinter的官方網(wǎng)站上有詳細(xì)的例子和文檔,因此,本篇內(nèi)容就不對具體的一些參數(shù)和用法進(jìn)行介紹了。本道直接給出一個(gè)例子。
- <html>
- <head>
- <title>我的第一個(gè)打印文檔</title>
- <!-- 插入打印控件 -->
- <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=2,1,0,3"></OBJECT>
- <script>
- function doPrint()
- {
- myreport = {
- print_settings:{
- // 如果想使用默認(rèn)打印機(jī),不需要設(shè)置
- // printer: '聯(lián)想激打',
- // 指定紙張的高寬以毫米為單位z,本設(shè)置實(shí)際是指定為a4大小
- pageWidth : 2100,
- pageHeight : 2970,
- // 指定打打印方向?yàn)闄M向, 1/2 = 縱向/橫向
- orientation : 2 },
- documents:document, // 要打印的div 對象在本文檔中,控件將從本文檔中的 id 為 'page1' 的div對象,作為首頁打印
- // id 為 'page2' 的作為第二頁打印
- copyrights:'杰創(chuàng)軟件擁有版權(quán) www.jatools.com' // 版權(quán)聲明,必須
- };
- jatoolsPrinter.printPreview(myreport); // 預(yù)覽
- }
- </script>
- </head>
- <body bgcolor="#e0e0e0">
- <div id='page1' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文檔第一頁</div>
- <div id='page2' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文檔第二頁</div>
- <input type="button" value="按鈕" onClick=' doPrint()'>
- </body>
- </html>
<html> <head> <title>我的第一個(gè)打印文檔</title> <!-- 插入打印控件 --> <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=2,1,0,3"></OBJECT> <script> function doPrint() { myreport = { print_settings:{ // 如果想使用默認(rèn)打印機(jī),不需要設(shè)置 // printer: '聯(lián)想激打', // 指定紙張的高寬以毫米為單位z,本設(shè)置實(shí)際是指定為a4大小 pageWidth : 2100, pageHeight : 2970, // 指定打打印方向?yàn)闄M向, 1/2 = 縱向/橫向 orientation : 2 }, documents:document, // 要打印的div 對象在本文檔中,控件將從本文檔中的 id 為 'page1' 的div對象,作為首頁打印 // id 為 'page2' 的作為第二頁打印 copyrights:'杰創(chuàng)軟件擁有版權(quán) www.jatools.com' // 版權(quán)聲明,必須 }; jatoolsPrinter.printPreview(myreport); // 預(yù)覽 } </script> </head> <body bgcolor="#e0e0e0"> <div id='page1' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文檔第一頁</div> <div id='page2' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文檔第二頁</div> <input type="button" value="按鈕" onClick=' doPrint()'> </body> </html>
點(diǎn)擊按鈕后,就彈出預(yù)覽界面,如下圖:

jatoolsPrinter免費(fèi)版只能使用在網(wǎng)段192.168.*.*。
本來在沒了解jatoolsPrinter之前,對它抱有很大的希望,誰知到只能在192.168.*.*使用。在實(shí)際環(huán)境中,有很多局域網(wǎng)是172.16.*.*網(wǎng)段,總不能要求用戶改地址吧。
希望還有更好的打印控件出現(xiàn)。