天天看點

關于Java Web列印

目前來說,一般一個簡單的詳情頁面列印,直接調用window.print就行了; 但遇到複雜的時候,我們可能會想到用內建好的控件來解決,當然,如果你有時間又不怕麻煩,你也可以自己寫一堆js。

文中所述兩個列印控件均為免費版本,收費版本另當别論。

一、jatoolsPrinter

    jatoolsPrinter号稱真正的免費,不加水印,不限IP,相容IE6+等等;

    下載下傳位址: http://printfree.jatools.com/

    jatoolsPrinter的部署很簡單,可以簡單分為3個步驟:

    1.将控件引入到項目中

關于Java Web列印

    2.編寫列印js

    function doPrint(how) 

    { 

        //列印文檔對象.

        var myDoc ={

             documents: document, 

             // 在同一頁面中,有多個可列印文檔,他們可以用page_div_prefix屬性來差別 

             // page_div_prefix字首+page+頁序号 構成可列印div的id, 

             // 如字首為 'report1' ,則找到以 'report1page1'為id的div作為文檔首頁 

             // 該屬性,預設值為空 

             page_div_prefix: "report",

             copyrights: '傑創軟體擁有版權  www.jatools.com'

         };           

       // 調用列印方法 

       if(how == '列印預覽...') 

           jatoolsPrinter.printPreview(myDoc );   // 列印預覽        

       else if(how == '列印...') 

           jatoolsPrinter.print(myDoc ,true);   // 列印前彈出列印設定對話框        

       else  

           jatoolsPrinter.print(myDoc ,false);       // 不彈出對話框列印 

    } 

    3.給需要列印的div取id名

    預設列印page1,page2,page3...,如果page_div_prefix不為空,需要在id前面加上page_div_prefix對應的值

    傑表的優點就不說了,一大堆,這裡說下最主要的兩個缺失功能(當然,收費版應有盡有),

    第一,不支援自動縮放列印,就是說,如果你的頁面高度或者寬度過大,那麼,肯定不完全列印,多餘的部門會被截掉

              解決的辦法就是你隻能把頁面改小點來去相容它;

    第二,不支援列印隐藏對象,這個真的挺頭疼,如果遇到批量列印,而且列印的内容需要到背景去查詢的,這個就不能用了,

              有個帶點風險的解決辦法,就是将你不顯示出來的div設定z-index屬性,放到顯示内容的下面就行了。

二、LODOP

      lodop同樣免費,而且使用起來也很友善。

      下載下傳位址: http://www.lodop.net/download.html

      lodop的部署:

      1.引入lodop控件

      <script language="javascript" src="LodopFuncs.js"></script>
      <object  id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0> 
              <embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0></embed>
      </object>

      2.編寫列印js

      var LODOP; //聲明為全局變量

      function prn1_preview() { 

         CreateOneFormPage(); 

         LODOP.PREVIEW(); 

      };

      function prn1_print() {  

         CreateOneFormPage();

         LODOP.PRINT(); 

      };

      function prn1_printA() {  

         CreateOneFormPage();

         LODOP.PRINTA();  

      };

      function CreateOneFormPage(){

         LODOP=getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM')); 

          LODOP.SET_PRINT_STYLE("FontSize",16);

          LODOP.SET_PRINT_STYLE("Bold",1);

          var htm = str+"<body>"+document.getElementById("page1").innerHTML+"</body>";

          LODOP.ADD_PRINT_HTM("0%", "0%", "100%", "100%", htm);

      }

      具體方法作用可以參考官網demo

      LODOP最主要的優點就是可以指定列印哪個子產品,隻要給他一個id就行,真的是很友善,比較明顯的缺點有兩個:

      第一,列印頁面不能将原頁面中css帶過來,需要自己引入,具體方法見LODOP功能示範

      第二,直接列印出來的頁面,底部居然有LODOP的logo資訊,具體資訊:本頁由【試用版列印控件Lodop6.0.5.6】輸出,這個讓我無法接受,估計使用者看到也會發瘋,

                 咨詢過LODOP作者,确定需要購買注冊号才能去掉。

     總的說來,兩個控件都很不錯,雖然免費的功能不是很多,但一般的項目中應該也是夠用了。

繼續閱讀