<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    [摘錄] Web 上打印的一些方法


    摘錄地址:http://blog.csdn.net/llwen218/archive/2006/06/07/778197.aspx

    一、利用IE內(nèi)部打印組件:    
      這個方案也許是最簡單的,當(dāng)然不會很“專業(yè)”。我們假設(shè)客戶端是IE6.0版本,因為在IE6.0中才完全體現(xiàn)我們所要應(yīng)用的“打印模板機制”。它在精確控制頁面邊界,文本間隔,以及打印的統(tǒng)一性上,功能更為完備。    
        至于這種方案的實現(xiàn)也相當(dāng)簡單,它主要只涉及到DEVICERECT,LAYOUTRECT兩種行為方式,分別用來定義整體頁面風(fēng)格及單個頁面內(nèi)容風(fēng)格。而我們所要打印的HTML可以通過LAYOUTRECT的CONTENTSRC屬性來指定。可喜的是即使我們有1000個頁面要打印,也可以簡單的通過我們的打印模板添加動態(tài)修建HTML功能,實現(xiàn)單模板控制多文件風(fēng)格。(請參考本文所附代碼)。這個方案在CSDN有詳細(xì)的介紹,但沒有附示例。示例文件可以在MSDN上下載得到。    
       
       
      二、利用外部DLL打印組件:    
       
        此類方案實現(xiàn)倒也不很復(fù)雜,只是利用DLL本身內(nèi)部類函數(shù)操作,創(chuàng)建報表、格式并進行打印,而無需考慮內(nèi)部實現(xiàn)環(huán)節(jié)。但對于WEB打印來說,似乎不合適。我個人認(rèn)為在WEB上創(chuàng)建報表的HTML,然后利用客戶端IE打印是最好的解決方式。而如果你的C#或VB不是很好,那么外部DLL的類型解決是一個很讓人頭疼的事情,何況還要應(yīng)用到WEB環(huán)境下。這種方案我用傻兒的打印組件調(diào)試過,但沒成功。    
       
      三、利用外部OCX類控件    
        這類方案和第二種差不多,也是建立在別人的成果的基礎(chǔ)上,但是在ASP.net下,如果沒有這個控件的說明書,我相信你也會和我一樣,不知道該從哪里下手開始設(shè)計。    
       
      四、利用XML解析打印    
        這種解決方案在微軟家園有很詳細(xì)的介紹,其原理就是解析出定義好的XML格式標(biāo)記,解讀出文件中標(biāo)記的參數(shù)定義,最后將這些信息還原成打印機輸出的圖形格式。很簡單的理解,例如你要打印一個簡單的表格,那么我們將表格解析成為文本和表格兩部分,程式設(shè)計時我們遇到文本文本則輸出文本到打印機,遇到表格標(biāo)簽即輸出LINE到打印機。如此你可以自定義一些特殊的標(biāo)簽,如圖片,特殊形狀等。這種方案開發(fā)起來很簡單,而且很“專業(yè)”,不過其缺點:客戶端需要安裝.NET   FrameWork.(傻了。。)    
       
      五、轉(zhuǎn)化為PDF文件,利用PDF打印    
        轉(zhuǎn)化為其它類型的文件輸出,是打印方案很常用的一種方式,而PDF文件格式以其優(yōu)異的“品質(zhì)”(打印品質(zhì))和“性能”(應(yīng)用功能)無疑是一種很經(jīng)濟的方式。而且從WEB向PDF轉(zhuǎn)換不是很困難,資源占用也不是很嚴(yán)重,這是它在同類方案中的優(yōu)點,也是異類方案中的缺點。如此你可以去PDFCHINA上搜尋相關(guān)可用信息。    
       
      六、利用外部設(shè)計器設(shè)計報表,內(nèi)部程式碼控制打印    
        這里我針對思路來講這種方案,并針對VISUAL DESIGNER報表組件。我們預(yù)先得利用設(shè)計器做好報表的格式,爾后在程式碼里面住報表各表單“套值”,就這么簡單。有點像ACCESS里面的報表設(shè)計方式。我所在公司的管理系統(tǒng)就是ACCESS寫的,所以我其實挺喜歡這種方案。至于VISUAL DESIGNER可以在CSDN下載到,并有開發(fā)說明書。    
       
      七、自己寫專業(yè)報表打印組件    
        這是*不得已的作法,當(dāng)然更符合自己的要求,但是如果你不是專業(yè)的開發(fā)人員或有其它特殊目的,這些時間就不要花了。很羅索的。如果你有興趣寫,那么我建議你先看看第五種方案的思路和說明文檔。    
       
        WEB打印至今還沒有完美的解決方案,我個人期待IE在這一方面再加改進,以方便我們這一群“勞苦大眾”。    
       
      八、打印頁面:  
       
      <a   href="javascript:window.print()">   打印   </a>    
       
       
      打印時選擇內(nèi)容進行打印:    
       
      往往在打印網(wǎng)頁時,執(zhí)行window.print會把網(wǎng)頁的所有內(nèi)容全部打印,而有一大部分比如網(wǎng)頁頭部的圖片、尾部的版權(quán)聲明、按鈕等,并沒有必要打印出來,打印出來浪費時間又浪費油墨。如何把這些內(nèi)容進行有選擇的打印讓你的打印文本更簡潔明了,更省時美觀呢?以下就對這個問題寫一個JS文本,供有緣人參考。

    <script   language="javascript">  
      function   DtPrint()   {  
      if   (window.print)   {  
      var   p_1               =   document.all.p_1.innerHTML;  
      var   p_2           =   document.all.p_2.innerHTML;  
       
      這里根據(jù)你要打印的哪些內(nèi)容,從原顯示頁面中用  
      <div   id=P_1>p_1....</div><div   id=P_2>p_2...</div>等標(biāo)示,要打印多少項目就用多少下  
      提示一下,自己體會:),此處我只寫出兩個出來:D  
       
      var   css   =   '<style   type="text/css">'   +  
          'p   {     line-height:   120%}'   +  
          '.ftitle   {     line-height:   120%;   font-size:   18px;   color:   #000000}'   +  
          'td   {     font-size:   10px;   color:   #000000}'   +  
          '</style>'   ;  
       
      這里是定義打印用的CSS,可以根據(jù)你自己的設(shè)定去寫適合你的格式哦  
      本文只定義三個,p,.ftitle,td,其余自己寫。越美觀越好。  
       
      var   body   ='<table   width="640"   border="0"   cellspacing="0"   cellpadding="5">'   +  
                '     <tr>   '   +  
                '         <td     class="fbody">   '   +  
                '             <div   align="center"   class=ftitle>'   +   p_title   +   '</div>'   +   p_2   +    
                '         </td>'   +  
                '     </tr>'   +  
                '</table>';  
       
      body這才是你重新設(shè)置的打印格式,根據(jù)你的打印要求,重新把原顯示網(wǎng)頁的DIV內(nèi)容重新  
      組合,可以根據(jù)你原來的表格內(nèi)容,去掉不要打印的東東,只調(diào)用你要打印的內(nèi)容  
      另外:根據(jù)經(jīng)驗,表格大小為640左右正好是適合A4打印幅面!哈!  
       
      document.body.innerHTML   =   '<center>'   +   css   +   body   +   '</center>';  
       
      然后在這里把document.body重新設(shè)一下,這就是打印文檔!(有加CSS格式了)  
       
      window.print();  
       
      }  
      }  
      </SCRIPT>  
       
      在頁面中,然后通過:dtPrint()調(diào)用,就行了  
      比如:  
      <input   type="button"   value="打印"   LANGUAGE="javascript"   onclick="return    
      dtPrint()"   ID="Button2"   NAME="Button1">  
       
      噢!注意這個可以不用<div></div>標(biāo)示哦,即使標(biāo)示,也不用在以上打印文本中調(diào)用出來,那樣這個Button就不會打印出來了哦  




    歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人

    posted on 2007-07-30 10:33 見酒就暈 閱讀(222) 評論(0)  編輯  收藏 所屬分類: 常用技術(shù)

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(3)

    我參與的團隊

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    BLOG

    FRIENDS

    LIFE

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久亚洲春色中文字幕久久久 | 日韩成人免费在线| 国产成人高清亚洲一区91| 国产亚洲人成网站在线观看| 久久久久成人片免费观看蜜芽 | 国产亚洲av片在线观看播放| 91免费在线播放| 无遮挡呻吟娇喘视频免费播放| 亚洲av永久无码精品网站| 成人超污免费网站在线看| 99热在线日韩精品免费| 亚洲国产精品成人精品软件| 免费中文字幕在线| 最近中文字幕免费2019| 五月天婷婷精品免费视频| 亚洲白嫩在线观看| 自拍偷自拍亚洲精品被多人伦好爽| xxxx日本免费| 最近免费中文字幕中文高清| 亚洲xxxx18| 亚洲欧洲第一a在线观看| 免费国产在线观看老王影院| 2015日韩永久免费视频播放| jizz免费在线影视观看网站| 亚洲欧美日韩一区二区三区| 亚洲男人第一av网站| 亚洲国产精品成人久久蜜臀| 国产桃色在线成免费视频| 青柠影视在线观看免费高清| 欧美亚洲精品一区二区| 久久精品亚洲AV久久久无码 | 一个人免费观看日本www视频| 亚洲精品亚洲人成在线播放| 亚洲AV午夜成人片| 五月天婷亚洲天综合网精品偷| 91嫩草国产在线观看免费| 免费国产黄网站在线观看视频| 免费精品国产自产拍在线观看| 亚洲综合一区无码精品| 亚洲综合综合在线| 亚洲国产精品无码av|