關(guān)于JS打印問題!網(wǎng)上收集+自己總結(jié) ,需要的朋友可以參考下。
創(chuàng)新互聯(lián)公司專業(yè)為企事業(yè)單位提供成都網(wǎng)站建設(shè)公司、成都網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化、微信開發(fā)、手機(jī)網(wǎng)站建設(shè)、空間域名、網(wǎng)頁空間、企業(yè)郵箱等互聯(lián)網(wǎng)基礎(chǔ)服務(wù)。成立與2013年,我們先后簽約上千多家中小型企業(yè)和科技發(fā)展公司的網(wǎng)站建設(shè)和網(wǎng)站推廣項(xiàng)目。通過多年的創(chuàng)新發(fā)展,已發(fā)展成為專業(yè)能力較強(qiáng),服務(wù)較好的建站公司。
一般打印就用window.print();就OK了
但是一般都是選擇性打印所以會(huì)調(diào)用方法:
復(fù)制代碼 代碼如下:
function preview()
{
bdhtml=window.document.body.innerHTML;
sprnstr="!--startprint--";
eprnstr="!--endprint--";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
}
問題又來了~
會(huì)有頁腳和頁眉~還有橫向和縱向之分~
怎么辦?
最好就是用到打印預(yù)覽~
因?yàn)樗锩嬗性O(shè)置
這時(shí)必須引用IE的一個(gè)控件"WebBrowser"
在頁面里引用:
object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"
/object
其控件方法:
復(fù)制代碼 代碼如下:
WebBrowser.ExecWB(1,1) 打開
WebBrowser.ExecWB(2,1) 關(guān)閉現(xiàn)在所有的IE窗口,并打開一個(gè)新窗口
WebBrowser.ExecWB(4,1) 保存網(wǎng)頁
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印預(yù)覽
WebBrowser.ExecWB(8,1) 打印頁面設(shè)置
WebBrowser.ExecWB(10,1) 查看頁面屬性
WebBrowser.ExecWB(15,1) 好像是撤銷,有待確認(rèn)
WebBrowser.ExecWB(17,1) 全選
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 關(guān)閉窗體無提示
示例:
object id="WebBrowser" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"
打印測(cè)試
input type="button" onclick="WebBrowser.ExecWB(7,1)" value="打印預(yù)覽"
隨便用個(gè)文本文件復(fù)制粘貼~改后綴名~
ie運(yùn)行~點(diǎn)預(yù)覽~設(shè)置打印~打印~OK
然后再把其考到項(xiàng)目里~比如aspx里
同樣運(yùn)行,點(diǎn)預(yù)覽~
咦~怎么出現(xiàn)ie安全警告"internet explorer"已阻止此站點(diǎn)用不安全方式使用ActiveX控件"
這時(shí)就要改ie的安全設(shè)置了(如果沒裝補(bǔ)丁就沒事~那是你"rp"好,不一定客戶和其他的人的"rp"和你一樣好)
操作:
主菜單"工具"——Internet選項(xiàng)——安全——自定義級(jí)別, 將"安全設(shè)置"中"對(duì)沒有標(biāo)記為安全的ActiveX"控件進(jìn)行初始化和腳本運(yùn)行由"禁用"改為"啟用"
另一種方法,"工具" "Internet選項(xiàng)" "受信任的站點(diǎn)(可信站點(diǎn))""站點(diǎn)",然后填入網(wǎng)址即可,如果這個(gè)網(wǎng)站不是以https:連接的把下面"對(duì)該區(qū)域中的所有站點(diǎn)要求服務(wù)器驗(yàn)證(https:)"前面的勾去掉即可。
(如果是局域網(wǎng):那就是 "工具" "Internet選項(xiàng)" "本地Internet" "高級(jí)")
js 沒有這種能力,我們公司用到了一個(gè)打印插件 lodop 你可以百度下,非廣告
你也可以找其他的插件
js 是沒有控制硬件能力的,必須用其他的插件 提供接口給它調(diào)用 才可以打印相關(guān)
當(dāng)然 默認(rèn)的瀏覽器 也是有打印功能的,但不是很好用
基于web的套打,難度在于要將瀏覽器中呈現(xiàn)的html,精確地打印到票據(jù)中,而且能夠?qū)崿F(xiàn)對(duì)分頁位置的控制。下面就ie瀏覽器所能采用的套打解決方案,來個(gè)匯總分析,希望對(duì)大家有所幫助。
一、瀏覽器的打印功能菜單
這種方案的優(yōu)勢(shì)是不需要對(duì)瀏覽器作任何擴(kuò)充,是最簡(jiǎn)單的辦法,但問題也最多,如:
不能精確分頁。瀏覽器一般是根據(jù)用戶設(shè)置的頁面大小,web頁面的內(nèi)容多少,來自行決定分頁位置,程序員很難控制。會(huì)有頁腳頁眉干擾。
不能準(zhǔn)確對(duì)齊邊邊距及打印文字。
不能解決連續(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)對(duì)html文檔輸出打印的控制,比如設(shè)置紙張大小,紙張縱橫方向,打印邊距,分頁等。顯而易見,這種方式成本小,不需要下載任何插件,而且跨平臺(tái)性非常好。print css推出已經(jīng)有些時(shí)日,但遺憾的是,至今沒有一個(gè)廠商的瀏覽器很好地實(shí)現(xiàn)了這些標(biāo)準(zhǔn),這使得程序員目前還不能利用print css進(jìn)行實(shí)際的開發(fā)。
四 、使用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í)間)。市場(chǎng)上的非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中來打印。也就是說,打印的話,必須兩次請(qǐng)求,一次html呈現(xiàn),一次用來打印。
不能解決連續(xù)打印。比如,不是僅打印一張票據(jù),而是連續(xù)一次打印若干個(gè)票據(jù)。
不能解決打印機(jī)設(shè)置問題,如存在多臺(tái)打印機(jī)時(shí),總是需要手工選擇,打印到哪一臺(tái)打印機(jī)。
市場(chǎng)上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)的許可,申請(qǐng)時(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è)定。
對(duì)于簡(jiǎn)單的打印,我們用IE的功能就可以了,對(duì)于需要復(fù)雜的設(shè)置的,建議使用輕量級(jí)的ActiveX打印方式。在接下來的系列教程里,我們會(huì)一一介紹。
---------------------------------------二 使用IE的打印功能進(jìn)行一般的網(wǎng)頁打印-----------------------------
在我們進(jìn)行web開發(fā)的時(shí)候,通常會(huì)需要用到打印,然而,由于web技術(shù)的限制及考慮到安全的問題,一直以來,web打印的功能都是非常弱的,對(duì)此,我們也只能接受。也許你在開發(fā)過程中經(jīng)常會(huì)遇見客戶對(duì)你說,“你們系統(tǒng)的打印太差了,你看看excel的打印多好啊,”,面對(duì)這樣的用戶,我們除了苦笑,還能說什么呢?如果你對(duì)著他們?nèi)ソ忉屖裁词荁S架構(gòu),什么是CS架構(gòu),不但不能夠解決問題,反而會(huì)招致用戶的反感。
那么,我們是不是就什么都不能做了呢?答案當(dāng)然是否定的。利用現(xiàn)有的web技術(shù),再加上針對(duì)求的靈活實(shí)現(xiàn),我們也可以做出漂亮的打印出來。
在接下來的幾篇文章里,我將分別介紹幾種打印的方法或技術(shù)。這些方法有的很簡(jiǎn)單,有的稍微復(fù)雜一點(diǎn)。我們還是從基礎(chǔ)做起,先了解最簡(jiǎn)單的打印技術(shù),然后再一步一步提高,這樣也有利于消化技術(shù)。
本篇內(nèi)容講述利用IE提供的簡(jiǎn)單的打印功能,進(jìn)行打印的設(shè)置以及打印。
在IE里打印,我們可以通過javascript來調(diào)用window.print()函數(shù)實(shí)現(xiàn)。下面是一個(gè)簡(jiǎn)單的代碼示例。
Java代碼 收藏代碼
input type='button' value='打印' onclick='javascript:window.print()'/
點(diǎn)擊“打印”后,即可彈出打印窗口,如下圖
通過這個(gè)函數(shù),可以實(shí)現(xiàn)最簡(jiǎn)單的打印功能。如果我們要對(duì)紙張,頁邊距進(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 控件。
Java代碼 收藏代碼
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,我們?cè)诰W(wǎng)頁中可以用我們?cè)O(shè)置的id或name來引用它。
這個(gè)對(duì)象有很用法,其中涉及到打印的有下面三項(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è)置窗口里,可以對(duì)邊距,頁眉等進(jìn)行詳細(xì)設(shè)置。
通過以上三個(gè)功能,我們就可以進(jìn)行簡(jiǎn)單的打印和設(shè)置了,對(duì)于一般的打印需求來說基本足夠。
這里需要說明的是,“頁面設(shè)置”中的各個(gè)值,是存儲(chǔ)在用戶的注冊(cè)表中。
分享文章:javascript打印,JavaScript打印日期
文章轉(zhuǎn)載:http://jinyejixie.com/article18/dsedogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化、網(wǎng)頁設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)