js調用打印機.doc_第1頁
js調用打印機.doc_第2頁
js調用打印機.doc_第3頁
js調用打印機.doc_第4頁
js調用打印機.doc_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1網(wǎng)頁打印實例網(wǎng)頁打印按鈕的源代碼:javascript:window.print();可以用css控制media print.a display:block.b display:hidden好像是這樣。把你不想打印的部分class設為b首先在網(wǎng)頁中添加:然后就可以依次加入功能按鈕了:  將這兩塊東西放到就不會打印這些按鈕了。當然要定義noprint了:.Noprint DISPLAY: none 只要把不想打印的東西的css設置成noprint就可以了。現(xiàn)在就實現(xiàn)了基本的web打印,需要注意的情況如下:1. 必須將ie的internet選項的安全設置中對于沒有標記為安全的ActiveX控件進行.設置成提示或者啟用,否則會報錯,導致不可用。2. 如果在編輯環(huán)境下編輯該頁面,它經(jīng)常自動的給object添加多余的參數(shù),有了這些東西,打印就會出錯,所以要記得最后保存的時候刪除它們。為了簡便并且達到最好的效果,我們可以在一個頁面實現(xiàn)編輯和打印,這時候會需要很多的textbox,我們把它的css設置成.edittext overflow-y:visible;width: 100%;border-top: none;border-right: none;border-bottom: none;border-left: none;就可以實現(xiàn)在打印的時候不顯示邊框和multiline的textbox不顯示滾動條了。還有一些小經(jīng)驗就是在設置標格寬度的時候,對于A4紙張,橫打用920,豎打用640,效果最好。相信用B/S方式做過應用的人都可能會遇到這樣一個問題,如何方便、美觀地實現(xiàn)報表打印。如果使用瀏覽器的打印菜單打印的話,將把網(wǎng)頁上的一些無用的東西打到報表上,比如應用菜單等。因為選擇打印菜單打印網(wǎng)頁將會把網(wǎng)頁中的所有內容全部打印出來,如果你的應用有分幀則打印內容將包括各幀中的內容,而你實際要的內容只是其中一部分。所以有很多應用就只能把打印功能放到后臺完成了。 針對這種情況,我們該怎么辦?其實可以有多種方法實現(xiàn)網(wǎng)頁打印功能。一種方法就是使用專業(yè)的打印工具,如Crystal Reports(水晶報表)。用過Visual Studio 5.0的朋友肯定記得這個工具,不過那時的版本只有4.幾?,F(xiàn)在的最新版本已達9了,近幾個版本的水晶報表都支持WEB打印。最簡單的方法是先用水晶報表制作好模板,然后使用ASP帶參數(shù)調用制作好的模板即可。水晶報表在網(wǎng)頁上生成報表后,可以直接打印,也可以轉存為其它的比較通過的文件如Excel文件。使用水晶報表可以制作出非常漂亮的樣式,關鍵在你對水晶報表的開發(fā)能力上,但由于水晶報表價格較高,只有當項目很賺錢時才買得起。第二種方法是購買第三方的網(wǎng)上打印控件,費用同水晶報表相比便宜,但效果性能到底如何則仁者見仁了。第三種方法是利用樣式表及JavaScript自定義函數(shù)實現(xiàn)。通過樣式表及JavaScript,實現(xiàn)網(wǎng)頁打印,效果也還可以。在此有一個實例請大家看看。下面是打印函數(shù)實現(xiàn)詳解:script language=JavaScript type=text/JavaScript!-function DP() if (window.print) var Div1 = document.all.Div1.innerHTML;var Div2 = document.all.Div2.innerHTML; / */ Div1、Div2即為你在打印的區(qū)域/ 這里根據(jù)你要打印的哪些內容,從原顯示頁面中用/ div id=Div1Div1./divdiv id=Div2Div2./div/ 等標示出來,要打印多少項目就標示多少/ * var css = style type=text/css media=all +p line-height: 120% +.ftitle line-height: 120%; font-size: 18px; color: #000000 +td font-size: 10px; color: #000000 +/style ;/ */ 定義打印用的CSS,具體你想打印出什么樣的格式全看你自己/ 了,但要注意:如果此處有什么同網(wǎng)頁中不一致的,可能打印/ 出來的頁面同網(wǎng)頁格式、字體可能會有所不同/ *var body =table width=640 border=0 cellspacing=0 cellpadding=5 + tr + td class=fbody + div align=center class=ftitle + Div1 + /div + Div2 + /td + /tr +/table;/ */ 在此處重新設置的打印格式,根據(jù)你的打印要求,將原顯示的/ 網(wǎng)頁的DIV內容重新組合,可以根據(jù)你原來的表格內容,去掉/ 不要打印的,你也可以能下面定義的noprint忽略掉你不想打/ 印的東西,只調用你要打印的內容,但這樣被忽略掉的地方將/ 打印出空,不是很美觀。表格寬度要同打印的紙張寬度匹配。/ *document.body.innerHTML = center + css + body + /center;/ */ 重設document.body,打印文檔準備就緒/ *window.print();window.history.go(0);/ */ 調用打印命令,打印當前窗口內容。當你打印時其實是一張新/ 的網(wǎng)頁了,但網(wǎng)頁文件還是原先的。緊接著調用/ window.history.go(0),再回到打印前的頁面,效果相當不差/ *-/scriptstylemedia print .noprint display:none/style!-/.noprint 定義了noprint,在以下不需要打印的地方加入class=noprint后,用window.print()打印就會忽略-好了,一切就緒了,現(xiàn)在要做的就是調用DP函數(shù),如果你將實現(xiàn)調用的按鈕設計在同一張網(wǎng)頁上,則直接調用即可;如果你用了分幀方法,實現(xiàn)調用的按鈕是在另一張網(wǎng)頁上,則在DP函數(shù)的第一行加入window.focus()命令,否則打印的只是有按鈕的網(wǎng)頁。第四種方法,實現(xiàn)是一種取巧的方法。一樣還是通過調用window.print()實現(xiàn),只是將你要打印的內容專門生成一張網(wǎng)頁,而打印按鈕在另一幀上。假設報表網(wǎng)頁在mainFrame上,按鈕在topFrame上,按鈕調用PrintReports()函數(shù),PrintReports()函數(shù)如下即可實現(xiàn)打印工作。function PrintReports() /topFrame網(wǎng)頁中的函數(shù)try/ */ 錯誤處理,如果在mainFrame中的網(wǎng)頁沒有DP函數(shù)則不打印/ *window.parent.frames(mainFrame).DP();catch(e)alert(no object to print!); function DP() / mainFrame網(wǎng)頁中函數(shù)window.focus();if (window.print)window.print();1、控制縱打、 橫打”和“頁面的邊距。(1) function SetPrintSettings() / - advanced features factory.printing.SetMarginMeasure(2) / measure margins in inches factory.SetPageRange(false, 1, 3) / need pages from 1 to 3 factory.printing.printer = HP DeskJet 870C factory.printing.copies = 2 factory.printing.collate = true factory.printing.paperSize = A4 factory.printing.paperSource = Manual feed/ - basic features factory.printing.header = This is MeadCo factory.printing.footer = Advanced Printing by ScriptX factory.printing.portrait = false factory.printing.leftMargin = 1.0 factory.printing.topMargin = 1.0 factory.printing.rightMargin = 1.0 factory.printing.bottomMargin = 1.0 (2) function printsetup() / 打印頁面設置wb.execwb(8,1); function printpreview() / 打印頁面預覽wb.execwb(7,1); function printit() if (confirm(確定打印嗎?) wb.execwb(6,6) - 關于這個組件還有其他的用法,列舉如下:WebBrowser.ExecWB(1,1) 打開Web.ExecWB(2,1) 關閉現(xiàn)在所有的IE窗口,并打開一個新窗口Web.ExecWB(4,1) 保存網(wǎng)頁Web.ExecWB(6,1) 打印Web.ExecWB(7,1) 打印預覽Web.ExecWB(8,1) 打印頁面設置Web.ExecWB(10,1) 查看頁面屬性Web.ExecWB(15,1) 好像是撤銷,有待確認Web.ExecWB(17,1) 全選Web.ExecWB(22,1) 刷新Web.ExecWB(45,1) 關閉窗體無提示2、分頁打印 P page-break-after: always 3、ASP頁面打印時如何去掉頁面底部的路徑和頂端的頁碼編號(1)ie的文件-頁面設置-講里面的頁眉和頁腳里面的東西都去掉,打印就不出來了。(2) New Document dim hkey_root,hkey_path,hkey_key hkey_root=HKEY_CURRENT_USER hkey_path=/Software/Microsoft/Internet Explorer/PageSetup /設置網(wǎng)頁打印的頁眉頁腳為空function pagesetup_null() on error resume next Set RegWsh = CreateObject(WScript.Shell) hkey_key=/headerRegWsh.RegWrite hkey_root+hkey_path+hkey_key, hkey_key=/footer RegWsh.RegWrite hkey_root+hkey_path+hkey_key, end function /設置網(wǎng)頁打印的頁眉頁腳為默認值function pagesetup_default() on error resume next Set RegWsh = CreateObject(WScript.Shell) hkey_key=/headerRegWsh.RegWrite hkey_root+hkey_path+hkey_key,&w&b頁碼,&p/&P hkey_key=/footer RegWsh.RegWrite hkey_root+hkey_path+hkey_key,&u&b&d end function 4、浮動幀打印 function button1_onclick() var odoc=window.iframe1.document; var r=odoc.body.createTextRange(); var stxt=r.htmlText; alert(stxt) var pwin=window.open(,print); pwin.document.write(stxt); pwin.print(); 4、用FileSystem組件實現(xiàn)WEB應用中的本地特定打印 function print_onclick /打印函數(shù)dim label label=document.printinfo.label.value /獲得HTML頁面的數(shù)據(jù)set objfs=CreateObject(Scripting.FileSystemObject) /創(chuàng)建FileSystem組件對象的實例set objprinter=objfs.CreateTextFile (LPT1:,true) /建立與打印機的連接objprinter.Writeline(_) /輸出打印的內容objprinter.Writeline(| |) objprinter.Writeline(| 您打印的數(shù)據(jù)是:&label& |”) objprinter.Writeline(| |) objprinter.Writeline(|_|) objprinter.close /斷開與打印機的連接set objprinter=nothing set objfs=nothing / 關閉FileSystem組件對象end function 服務器端腳本: /與數(shù)據(jù)庫進行交互HTML頁面編碼: id=print name=print /調用打印函數(shù)INPUT type=hidden id=text1 name=label value= /保存服務器端傳來的數(shù)據(jù)可以控制打印區(qū)域打印代碼先寫入以下代碼:function doPrint()var str=;var article;var css;var strAdBegin=;var strAdEnd=;var strFontSize=【大 中 小】var strdoPrint=doPrint();var strTmp;css=+bodyfont-family:宋體+td,.f12font-size:12px+.f24 font-size:24px;+.f14 font-size:14px;+.title14 font-size:14px;line-height:130%+.l17 line-height:170%;+;str += css;str += ;str += +document.title+;str += ;str += 新浪首頁 > 新聞中心 >  正文返回打印;str += ;article=document.getElementById(article).innerHTML;if(article.indexOf(strAdBegin)!=-1)str +=article.substr(0,article.indexOf(strAdBegin);strTmp=article.substr(article.indexOf(strAdEnd)+strAdEnd.length, article.length);elsestrTmp=articlestr +=strTmpstr += window.location.hrefstr += ;str += ;document.write(str);document.close();利用文章正文 實際是通過設置id為article的區(qū)域來控制打印區(qū)域的大小.打印按鈕:【打印】WebBrowser是IE內置的瀏覽器控件,無需用戶下載。本文檔所討論的是有關IE6.0版本的WebBrowser控件技術內容。其他版本的IE應該也支持。與其相關的技術要求有:打印文檔的生成、頁面設置、打印操作的實現(xiàn)等幾個環(huán)節(jié)。本文以asp為例,但是他可以容易的移植到其他web技術中。一、WebBrowser控件二、WebBrowder控件的方法/打印WebBrowser1.ExecWB(6,1);/打印設置WebBrowser1.ExecWB(8,1);/打印預覽WebBrowser1.ExecWB(7,1);三、實現(xiàn)打印的設置,打印數(shù)據(jù)的生成,打印的預覽,和打印。實現(xiàn)打印的設置,打印數(shù)據(jù)的生成,打印的預覽,和打印我一般這樣做,假如查詢結果在a.asp中,那么在a.asp中放置打印設置、打印預覽、打印三個按鈕。單擊打印設置按鈕則在js中執(zhí)行WebBrowser1.ExecWB(8,1),以打開打印設置窗口。單擊打印預覽按鈕則打開一個b.asp,在b.asp中重新生成打印數(shù)據(jù),然后在b.asp中自動執(zhí)行WebBrowser1.ExecWB(7,1),以打開用戶預覽界面。單擊打印按鈕則也打開b.asp,在b.asp中重新生成打印數(shù)據(jù),然后在b.asp中自動執(zhí)行WebBrowser1.ExecWB(6,1),以自動打印數(shù)據(jù)。四、代碼a.asp調用數(shù)據(jù)的程序就不給出了。只給出幾個按鈕的代碼:function exePrint()liu= window.open(b.asp?do=1,_blank,left=2000,top=2000,fullscreen=3);function exePreview()window.open(b.asp?do=2,_blank,left=2000,top=2000,fullscreen=3);function exeSetting()WebBrowser.ExecWB(8,1);代碼中打印設置的代碼很簡單,大家很容易理解。打印預覽和打印的按鈕需要告訴b.asp我們將要執(zhí)行的是打印還是打印預覽。另外,還要將查詢字符串傳遞過去。當然web高手可以嘗試其他方法,以避免反復重服務器調數(shù)據(jù),當然初學者只能通過多次查詢,以犧牲性能來解決打印了。假設本例中a.asp通過傳遞一個查詢串打開了b.asp,則在b.asp中將重新載入數(shù)據(jù)。在這里載入數(shù)據(jù)后將數(shù)據(jù)顯示在網(wǎng)頁上需要知道每個頁要顯示多少條(PageSize)。顯示的時候彈出打印窗口,去掉網(wǎng)址顯示.function window.onload() factory.printing.header = -factory.printing.footer = -factory.printing.Print(true)factory.printing.leftMargin = 0.2factory.printing.topMargin = 0.5factory.printing.rightMargin = 0.2factory.printing.bottomMargin = 1.5WEB打印,去頁眉和頁腳作者: 未知日期:1. IE瀏覽器. 文件-頁面設置.把頁腳去掉就行了.2.用代碼./有提示的. New Document dim hkey_root,hkey_path,hkey_key hkey_root=HKEY_CURRENT_USER hkey_path=/Software/Microsoft/Internet Explorer/PageSetup /設置網(wǎng)頁打印的頁眉頁腳為空function pagesetup_null() on error resume next Set RegWsh = CreateObject(WScript.Shell) hkey_key=/header RegWsh.RegWrite hkey_root+hkey_path+hkey_key, hkey_key=/footer RegWsh.RegWrite hkey_root+hkey_path+hkey_key, end function /設置網(wǎng)頁打印的頁眉頁腳為默認值function pagesetup_default() on error resume next Set RegWsh = CreateObject(WScript.Shell) hkey_key=/header RegWsh.RegWrite hkey_root+hkey_path+hkey_key,&w&b頁碼,&p/&P hkey_key=/footer RegWsh.RegWrite hkey_root+hkey_path+hkey_key,&u&b&d end function 2網(wǎng)頁打印實例第三種方法是利用樣式表及JavaScript自定義函數(shù)實現(xiàn)。通過樣式表及JavaScript,實現(xiàn)網(wǎng)頁打印,效果也還可以。在此有一個實例請大家看看。下面是打印函數(shù)實現(xiàn)詳解:script language=JavaScript type=text/JavaScript!- function DP() if (window.print) var Div1 = document.all.Div1.innerHTML; var Div2 = document.all.Div2.innerHTML; / * / Div1、Div2即為你在打印的區(qū)域/ 這里根據(jù)你要打印的哪些內容,從原顯示頁面中用/ div id=Div1Div1./divdiv id=Div2Div2./div/ 等標示出來,要打印多少項目就標示多少/ * Var css = style type=text/css media=all + p line-height: 120% + .ftitle line-height: 120%; font-size: 18px; color: #000000 + td font-size: 10px; color: #000000 + /style / * / 定義打印用的CSS,具體你想打印出什么樣的格式全看你自己/ 了,但要注意:如果此處有什么同網(wǎng)頁中不一致的,可能打印/ 出來的頁面同網(wǎng)頁格式、字體可能會有所不同/ * var body =table width=640 border=0 cellspacing=0 cellpadding=5 + tr + td class=fbody + div align=center class=ftitle + Div1 + /div + Div2 + /td + /tr + /table; / * / 在

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論