當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 上海OA系統(tǒng) > 上海OA快博
實(shí)現(xiàn)Web應(yīng)用中的本地打印
申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114
AMTeam.org實(shí)現(xiàn)Web應(yīng)用中的本地打印
邱慶華
隨著Internet的飛速發(fā)展,企業(yè)紛紛開(kāi)發(fā)基于Web的業(yè)務(wù)應(yīng)用系統(tǒng)。為了實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)與Internet的互聯(lián),許多企業(yè)將Web服務(wù)器和數(shù)據(jù)庫(kù)系統(tǒng)托管在IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心),因而需要從托管在 IDC的服務(wù)器上提取業(yè)務(wù)數(shù)據(jù)在本地打印輸出。通??蛻?hù)端瀏覽器只能打印簡(jiǎn)單的HTML頁(yè)面,如何才能在瀏覽器上實(shí)現(xiàn)更為強(qiáng)大靈活的打印輸出功能呢?筆者采用相關(guān)的技術(shù)對(duì)瀏覽器的功能進(jìn)行擴(kuò)展,完成了比較復(fù)雜的數(shù)據(jù)打印任務(wù),如收條、回執(zhí)等,下面具體介紹實(shí)現(xiàn)這種功能的方法。FileSystem組件使用簡(jiǎn)介
FileSystem組件是一個(gè)ActiveX控件,存在于Windows平臺(tái)中(不管是Win98、Win2000,還是NT操作系統(tǒng)都包含該組件),它的CLSID是“0D43FE01-11CF-8940-00A0C9054228”。熟悉ASP編程方法的人可能有許多使用過(guò)FileSystem組件,一般情況下該組件用在服務(wù)器端,用來(lái)對(duì)文本文件、文件夾及驅(qū)動(dòng)器進(jìn)行訪(fǎng)問(wèn)和控制??梢酝ㄟ^(guò)兩種方法創(chuàng)建FileSystem組件的對(duì)象實(shí)例:
1. 使用ASP內(nèi)置的Server對(duì)象的方法Server.CreateObject來(lái)創(chuàng)建服務(wù)器端對(duì)象的實(shí)例。
2. 使用VBScript腳本函數(shù)CreateObject來(lái)創(chuàng)建客戶(hù)端對(duì)象的實(shí)例(也可以在服務(wù)器端使用該方法,但有時(shí)會(huì)出錯(cuò),一般不建議使用)。
FileSystem組件有如下一些方法可以對(duì)文本文件進(jìn)行操作:
● CreateTextFile(Filename,[Overwrite if exists],[Unicode/ASCII])
//創(chuàng)建文本文件
● OpenTextFile(Filename,[Input/output mode],[Create if not exists],[Format])
//打開(kāi)文本文件
● CopyFile(Filename1,F(xiàn)ilename2,[Overwrite])
//拷貝文本文件
● MoveFile(Filename1,F(xiàn)ilename2)
//移動(dòng)文本文件
● DeleteFile(Filename)
//刪除文本文件
● GetFile(Filename)
//獲得文本文件
● FileExists(Filename)
//判斷文本文件是否存在
FileSystem組件對(duì)文件夾和驅(qū)動(dòng)器也有和操作文本文件相類(lèi)似的方法,在此不一一贅述。
FileSystem組件也可用于客戶(hù)端。如果采用創(chuàng)建FileSystem組件對(duì)象實(shí)例的第二種方法,就可以借助該組件對(duì)客戶(hù)端系統(tǒng)的文本文件、文件夾及驅(qū)動(dòng)器進(jìn)行訪(fǎng)問(wèn)和控制。因?yàn)閃indows系統(tǒng)帶有FileSystem組件,所以Windows平臺(tái)的客戶(hù)端不需要另外從遠(yuǎn)程服務(wù)器上下載它,在安裝操作系統(tǒng)時(shí)會(huì)自動(dòng)安裝這個(gè)組件并注冊(cè);而對(duì)于其他平臺(tái)的客戶(hù)端,則需要安裝插件并下載FileSystem組件。
本地打印的實(shí)現(xiàn)機(jī)制
利用FileSystem組件實(shí)現(xiàn)本地打印的過(guò)程如圖1所示:
圖1 本地打印的實(shí)現(xiàn)原理
1. 客戶(hù)端向Web服務(wù)器發(fā)送數(shù)據(jù)請(qǐng)求;
2.
Web服務(wù)器根據(jù)業(yè)務(wù)處理邏輯與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行交互,取得所需的數(shù)據(jù)并生成HTML頁(yè)面(其中有操作FileSystem組件對(duì)象的VBScript腳本),然后向客戶(hù)端瀏覽器發(fā)回HTML頁(yè)面;
3. 在客戶(hù)端運(yùn)行腳本,取出HTML頁(yè)面中的數(shù)據(jù),建立與打印機(jī)的連接,并向打印機(jī)輸出打印數(shù)據(jù)。
前兩步與一般的Web應(yīng)用沒(méi)有什么區(qū)別,需要說(shuō)明的是第三步:
首先使用VBScript腳本函數(shù)CreateObject來(lái)創(chuàng)建FileSystem組件對(duì)象的實(shí)例;然后調(diào)用該實(shí)例創(chuàng)建文本文件的CreateTextFile方法,把打印端口LPT1或LPT2作為文件名參數(shù),并將可否覆蓋文件的參數(shù)設(shè)為T(mén)RUE,建立與打印機(jī)的連接;
最后調(diào)用獲得的打印機(jī)文本文件流實(shí)例的寫(xiě)文本方法WriteLine,向打印機(jī)輸出打印的內(nèi)容。
程序示例
程序代碼分為客戶(hù)端執(zhí)行的腳本和服務(wù)器端執(zhí)行的腳本,客戶(hù)端執(zhí)行的腳本如下:
<script
Language=VBScript>
function print_onclick
//打印函數(shù)
dim
label
label=document.printinfo.label.value
//獲得HTML頁(yè)面里的數(shù)據(jù)
set
objfs=CreateObject(“Scripting.FileSystemObject”)
//創(chuàng)建FileSystem組件對(duì)象的實(shí)例
set
objprinter=objfs.CreateTextFile
(“LPT1:”,true)
//建立與打印機(jī)的連接
objprinter.Writeline(“___________________”)
//輸出打印的內(nèi)容
objprinter.Writeline(“|
|”)
objprinter.Writeline(“| 您打印的數(shù)據(jù)是:”&label&
“|”)
objprinter.Writeline(“|
|”)
objprinter.Writeline(“|________________|”)
objprinter.close
//斷開(kāi)與打印機(jī)的連接
set
objprinter=nothing
set objfs=nothing
// 關(guān)閉FileSystem組件對(duì)象
end
function
</script>
服務(wù)器端執(zhí)行的腳本如下:
<%……
set
conn=Server.CreateObject (“adodb.connection”)
conn.Open
“DSN=name;UID=XXXX;PWD=XXXX;”
set
rs=server.CreateObject(“adodb.recordset”)
rs.Open(“select ……”, conn, 1,
1)
……%>
//與數(shù)據(jù)庫(kù)進(jìn)行交互
HTML頁(yè)面其他代碼:
<HTML>
……
<FORM
ID=printinfo NAME=“printinfo”>
<INPUT type=“button” value=“打印>>”
id=print name=print >
//調(diào)用打印函數(shù)
<INPUT type=hidden id=text1
name=label value=<%=……%>>
//保存服務(wù)器端傳來(lái)的數(shù)據(jù)
……
</HTML>
小 結(jié)
●
使用此方法實(shí)現(xiàn)打印任務(wù)之前,必須調(diào)整瀏覽器的安全設(shè)置。通過(guò)降低瀏覽器的Internet選項(xiàng)上的安全級(jí)別,對(duì)自己的站點(diǎn)充分信任,才可以通過(guò)瀏覽器執(zhí)行腳本訪(fǎng)問(wèn)本機(jī)資源。
●
本方法可以實(shí)現(xiàn)在局域網(wǎng)的打印機(jī)上打印遠(yuǎn)程服務(wù)器的數(shù)據(jù)。只需用局域網(wǎng)上的打印機(jī)注冊(cè)在本地的端口代替本地打印機(jī)端口作為創(chuàng)建文本文件的CreateTextFile方法的參數(shù)即可。
● 本方法可以實(shí)現(xiàn)根據(jù)用戶(hù)的要求選擇打印的寬度、高度、數(shù)量和內(nèi)容,并可重復(fù)打印。
●
不需要編寫(xiě)ActiveX控件即可以完成特定的打印功能,實(shí)現(xiàn)較為簡(jiǎn)單。
●
不足之處是需要調(diào)整瀏覽器的安全設(shè)置,且不支持圖片和特殊字體的打印。
- 1上海OA能賺錢(qián)
- 2Web服務(wù)與二進(jìn)制傳輸
- 3客戶(hù)支持中心的上海OA(By AMT 宋亮)
- 4上海OA和信息管理之間的聯(lián)系和區(qū)別(By AMT 宋亮)
- 5麥肯錫電子商務(wù)論叢-網(wǎng)絡(luò)社群的價(jià)值所在
- 6上海OA的功能框架
- 7全文檢索技術(shù)的深層剖析
- 8企業(yè)內(nèi)部的知識(shí)市場(chǎng)
- 9知識(shí)轉(zhuǎn)移,是防范信息化風(fēng)險(xiǎn)的首要良方
- 10如何搭上Web服務(wù)這班車(chē)?
- 112002年Web Services技術(shù)論壇上海開(kāi)幕
- 12《解構(gòu)Web services系列之二》新興技術(shù)較勁 競(jìng)爭(zhēng)白熱化
- 13泛普軟件(上海)OA軟件官方網(wǎng)站的研究和分析
- 14“管理信息化熱點(diǎn)問(wèn)題討論”之八:上海OA很好,但到底如何實(shí)現(xiàn)(by AMT 孔祥云 徐家?。?
- 15麥肯錫電子商務(wù)論叢-網(wǎng)絡(luò)訂價(jià)策略
- 16[理論] 上海OA的“平衡”性分析及其實(shí)施的七個(gè)支柱(夏敬華)
- 17Web服務(wù)中的信息安全:軟肋 or 機(jī)會(huì)?
- 18網(wǎng)絡(luò)服務(wù)也稱(chēng)得上是一場(chǎng)革命
- 19上海OA管出企業(yè)"錢(qián)途"
- 20使用Visual Basic .NET訪(fǎng)問(wèn)Google的Web服務(wù)
- 21IBM絕地大反攻(II):加強(qiáng)與微軟的合作
- 22Web技術(shù)、上海OA與高等教育(by AMT 劉宇 編譯)
- 23五大Web服務(wù)神話(huà)
- 24實(shí)施上海OA:把經(jīng)驗(yàn)和信息轉(zhuǎn)化為生產(chǎn)力(by AMT 仲英豪編譯)
- 25美公司推出下一代網(wǎng)絡(luò)服務(wù)工具包
- 26美政府吸取911教訓(xùn)將眼光投向Web服務(wù)
- 27企業(yè)知識(shí)吸收能力的主要影響因素(劉常勇 謝洪明)
- 28Novell OneNet重拳出擊Web服務(wù)
- 29Check Point加強(qiáng)Web服務(wù)的安全性
- 30統(tǒng)計(jì)分析Web服務(wù)器日志
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓