一杯清茶

          統(tǒng)計(jì)

          留言簿

          Oracle SQL/PLSQL

          PowerDesigner教程系列

          Struts2.0

          web開發(fā)

          三人行

          從事RCP開發(fā)的同行

          工作流和權(quán)限設(shè)置

          閱讀排行榜

          評(píng)論排行榜

          JS網(wǎng)頁打印設(shè)置技巧

          轉(zhuǎn)自:http://blog.sina.com.cn/s/blog_3eba8f1c0100emu4.html

          最近寫一些東西需要提供網(wǎng)頁打印功能,所以歸納總結(jié)了一下,本節(jié)主要講述使用IE6支持打印功能,不同瀏覽器安全設(shè)置與支持有差異,如果不支持,請(qǐng)使用您的瀏覽器自帶打印功能(或手動(dòng)設(shè)置啟用ActiveX控件)。書寫有不足或描述不清的地方請(qǐng)大家指正。^-^

          利用CSS樣式打印是經(jīng)常使用的一種打印方法,利用它可以非常方便的實(shí)現(xiàn)打印頁面中的指定內(nèi)容和分頁打印,下面將通過具體實(shí)例介紹如何利用CSS樣式打印。

          [分析]:
          1.打印樣式區(qū)分:打印網(wǎng)頁帶頁面樣式,需指明一個(gè)media='print'的樣式,建議分開,如下創(chuàng)建軍一個(gè)bankprint.css打印樣式文件。
          <link rel="stylesheet" media="screen" type="text/css" href="/public/default/css/bank.css" />
          <!-- 打印樣式 -->
          <link rel="stylesheet" media="print" type="text/css" href="/public/default/css/bankprint.css" />
          例:
          <style media=‘print’>

          .Noprint {display:none;}

          .PageBreak {page-break-after: always;}

          </style>
          說明:
          media類型是CSS屬性媒體類型,用于直接引入媒體的屬性。其語法格式如下:
          @media screen | print | projection | braille | aural | tv | handheld | all
          參數(shù)說明
            screen:指計(jì)算機(jī)屏幕。
            print:指用于打印機(jī)的不透明介質(zhì)。
            projection:指用于顯示的項(xiàng)目。
            braille:盲文系統(tǒng),指有觸覺效果的印刷品。
            aural:指語音電子合成器。
            tv:電視類型的媒體。
            handheld:指手持式顯示設(shè)備。
            all:用于所有媒體。
          2.WebBrowser控件
          同其他控件一樣,首先我們需要在頁面中嵌入WebBrowser控件,不過由于該控件是IE瀏覽器自帶的,支持瀏覽器默認(rèn)安全設(shè)置,因此避免了安全性設(shè)置的麻煩。對(duì)于IE7及以上安全性要求更高的瀏覽器,您或許還是需要自定義IE的安全性級(jí)別。
          <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" id="wb" width="0" height="0"></OBJECT>
          下面就是該控件涉及打印的功能調(diào)用,用戶可以在JavaScrip中調(diào)用:
          wb.execwb(6,1); //打印,打印當(dāng)前頁面
          wb.execwb(7,1); //打印預(yù)覽
          wb.execwb(8,1); //打印設(shè)置,調(diào)出系統(tǒng)打印設(shè)置對(duì)話框

          3.頁眉、頁腳設(shè)置:打印時(shí),有的需要去掉頁眉頁腳,或替換成自已想要的。
          <script language="JavaScript">
              var hkey_root,hkey_path,hkey_key;
              hkey_root="HKEY_CURRENT_USER";
              hkey_path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
              //配置網(wǎng)頁打印的頁眉頁腳為空
              function pagesetup_null(){   
                  try{
                      var RegWsh = new ActiveXObject("WScript.Shell");           
                      hkey_key="header";           
                      RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"");
                      hkey_key="footer";
                      RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"");
                      //&b 第&p頁/共&P頁 &b
                  }catch(e){}
              }
              //配置網(wǎng)頁打印的頁眉頁腳為默認(rèn)值
              function pagesetup_default(){
                  try{
                      var RegWsh = new ActiveXObject("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");
                  }catch(e){}
              }
          ...
          </script>

          [源碼例子]:

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>打印設(shè)置</title>
          <link rel="stylesheet" media="screen" type="text/css" />
          <!-- 打印樣式 -->
          <link rel="stylesheet" media="print" type="text/css" />
          <script language="JavaScript">
              var hkey_root,hkey_path,hkey_key;
              hkey_root="HKEY_CURRENT_USER";
              hkey_path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
              //配置網(wǎng)頁打印的頁眉頁腳為空
              function pagesetup_null(){   
                  try{
                      var RegWsh = new ActiveXObject("WScript.Shell");           
                      hkey_key="header";           
                      RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"");
                      hkey_key="footer";
                      RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"");
                      //&b 第&p頁/共&P頁 &b
                  }catch(e){}
              }
              //配置網(wǎng)頁打印的頁眉頁腳為默認(rèn)值
              function pagesetup_default(){
                  try{
                      var RegWsh = new ActiveXObject("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");
                  }catch(e){}
               
               //打印選區(qū)內(nèi)容
              function doPrint() {
                  pagesetup_null();
                  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(); 
              }
              //打印頁面預(yù)覽
              function printpreview(){
                  pagesetup_null();
                  //wb.printing.header = "居左顯示&b居中顯示&b居右顯示頁碼,第&p頁/共&P頁";
                  //wb.printing.footer = "居左顯示&b居中顯示&b居右顯示頁碼,第&p頁/共&P頁";
                  try{
                      wb.execwb(7,1);
                  }catch(e){
                      alert("您的瀏覽器不支持此功能,請(qǐng)選擇'文件'->'打印預(yù)覽'");
                  }
              }
              //打印
              function prints(){
                  pagesetup_null();
                  //wb.printing.header = "居左顯示&b居中顯示&b居右顯示頁碼,第&p頁/共&P頁";
                  //wb.printing.footer = "居左顯示&b居中顯示&b居右顯示頁碼,第&p頁/共&P頁";
                  try{
                      wb.execwb(6,1);
                  }catch(e){
                      alert("您的瀏覽器不支持此功能");
                  }
              }
          </script>
          </head>
          <body>
          <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" id="wb" width="0" height="0"></OBJECT>
          <div id="bankwrap">
            <div class="Noprint"><a style="cursor:pointer; color:#0000FF">返回首頁</a></div>
            <div style="text-align:right">
              <p class="Noprint">
                  <span style="cursor:pointer; color:#0000FF" onclick="javascript:window.open('http://www.chinasvf.com/Webs/Share/printhelp')" class="Noprint">打印幫助</span>
                  <span style="cursor:pointer; color:#0000FF" onclick="printpreview();">打印預(yù)覽</span>
                  <span style="cursor:pointer; color:#0000FF" onclick="prints();" class="Noprint">打印</span>
              </p>
            </div>
            <div class="banktitle">內(nèi)容</div>
          </div>
          </body>
          </html>

          posted on 2009-07-22 20:12 一杯清茶 閱讀(3663) 評(píng)論(2)  編輯  收藏

          評(píng)論

          # re: JS網(wǎng)頁打印設(shè)置技巧 2010-07-08 16:44 犀山居士

          使用注冊(cè)表的那種方法好像沒有效果啊,是怎么回事?  回復(fù)  更多評(píng)論   

          # re: JS網(wǎng)頁打印設(shè)置技巧 2010-07-08 16:46 犀山居士

          有沒有辦法實(shí)現(xiàn)用代碼直接修改基本的打印設(shè)置參數(shù)?如修改打印紙張方向等,如注冊(cè)表那種方法,而不是要彈出設(shè)置界面讓用戶每次打印都要重新去設(shè)置,  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 大方县| 和顺县| 红原县| 榆林市| 资阳市| 泰兴市| 洱源县| SHOW| 新巴尔虎右旗| 临西县| 克山县| 淮安市| 漳州市| 青州市| 南陵县| 宜黄县| 伊川县| 淮安市| 肇东市| 灵丘县| 石家庄市| 瑞丽市| 始兴县| 敦化市| 临猗县| 双桥区| 葫芦岛市| 榆林市| 扎鲁特旗| 凭祥市| 伊宁市| 固镇县| 三台县| 布尔津县| 于都县| 慈利县| 祥云县| 华阴市| 离岛区| 汉中市| 刚察县|