Web打印的處理 方案之普通報表打印

作過許多 的Web項目,大多數在打印頁面內容的時刻 ,採用的都是議決 Javascript調用系統內置的打印要領 執行 打印,也就是調用 PrintControl.ExecWB(?,?)實現直接打印和打印預覽功能。打印的成效 及控制性雖然不是很好,可是也能夠 勉強運用 ,應付一般 的打印仍舊 可以 的了。
  代碼以下所示:javascript

//調用PrintControl.ExecWB(?,?)實現直接打印和打印預覽功能。(直接用系統提供的print()要領 打印不能 潛藏 某些區域)
//preview:能不能 顯示預覽。null/false:不顯示,true:顯示
function printPage(preview)
{
   try
   {
       var content=window.document.body.innerHTML;
       var oricontent=content;
       while(content.indexOf("{$printhide}")>=0) content=content.replace("{$printhide}","style='display:none'");
       if(content.indexOf("ID=\"PrintControl\"")<0) content=content+"<OBJECT ID=\"PrintControl\" WIDTH=0 HEIGHT=0 CLASSID=\"CLSID:8856F961-340A-11D0-A96B-00C04FD705A2\"></OBJECT>";
       window.document.body.innerHTML=content;
       //PrintControl.ExecWB(7,1)打印預覽,(1,1)打開,(4,1)另存爲,(17,1)全選,(10,1)屬性,(6,1)打印,(6,6)直接打印,(8,1)頁面配置 
       if(preview==nullpreview==false) PrintControl.ExecWB(6,1);
       else PrintControl.ExecWB(7,1); //OLECMDID_PRINT=7; OLECMDEXECOPT_DONTPROMPTUSER=6/OLECMDEXECOPT_PROMPTUSER=1
       window.document.body.innerHTML=oricontent;
   }
   catch(ex){ alert("執行Javascript腳本出錯。"); }
}
function printConten(preview, html)
{
   try
   {
       var content=html;
       var oricontent=window.document.body.innerHTML;
       while(content.indexOf("{$printhide}")>=0) content=content.replace("{$printhide}","style='display:none'");
       if(content.indexOf("ID=\"PrintControl\"")<0) content=content+"<OBJECT ID=\"PrintControl\" WIDTH=0 HEIGHT=0 CLASSID=\"CLSID:8856F961-340A-11D0-A96B-00C04FD705A2\"></OBJECT>";
       
       window.document.body.innerHTML=content;
       //PrintControl.ExecWB(7,1)打印預覽,(1,1)打開,(4,1)另存爲,(17,1)全選,(10,1)屬性,(6,1)打印,(6,6)直接打印,(8,1)頁面配置 
       if(preview==nullpreview==false) PrintControl.ExecWB(6,1);
       else PrintControl.ExecWB(7,1); //OLECMDID_PRINT=7; OLECMDEXECOPT_DONTPROMPTUSER=6/OLECMDEXECOPT_PROMPTUSER=1
       window.document.body.innerHTML=oricontent;
   }
   catch(ex){ alert("執行Javascript腳本出錯。"); }
} 

上面兩個函數放在一個Js文件中,在頁面內容中議決 運用 該腳本文件並調用進一步封裝的函數便可打印指定部分的內容:php

 <script language="javascript">
        function Print(preview)
        {
            var text = document.getElementById("content").innerHTML;
            printConten(preview, text);
        }

打印的成效 大體以下圖所示,假如 打印的頁面在框架頁面中,那麼需要 選定「僅打印選定框架」的選項。css

採用此種要領 ,不需要 安裝任何控件,具備很好的兼容優點,不過出來的報表內容,好像控制起來會比較麻煩一些,特別對於一些報表方面的打印,需要 輸出龐雜 的內容是,也有必須 的缺陷,但整體來講,也是一個較好的挑選 。
  後來在需要 作一些證件套打方面的工做,這個控件就作不到了,所以需要 一種要領 或者控件,可以較優勢 理套打方面的事情。
  無心間,發覺 一個比較好的打印控件,支撐 各類格式的打印,還有我關心的證件套打功能,功能強悍 ,運用 也很基本 的,特別值得推選 。
  控件的相關 地址:
  控件下載主頁:
  控件blog 推選 :
  運用 這個控件,普通報表的打印成效 以下所示:
html

上面兩個報表的打印原本 都差很少,都是打印部分的HTML內容,不事後者看起來要好一點,而且 提供很完備 的報表功能配置 。
  代碼大體以下所示。java

<script language="javascript">
        function Print(preview) {
            var text = document.getElementById("content").innerHTML;
            printConten(preview, text);
        }
    </script>
    
    <script language="javascript" src=""></script>
    <object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0> </object> 
    <script language="javascript">
        var LODOP = document.getElementById("LODOP"); //這行語句是爲了契合 DTD規範
        CheckLodop();
    </script>
    <script language="javascript" type="text/javascript">
        function Preview() {//打印預覽
            CreateLicenseData();
            LODOP.SET_SHOW_MODE("PREVIEW_IN_BROWSE", 1);
            LODOP.PREVIEW();
        };
        function Setup() {//打印維護 給用戶調整位置
            CreateLicenseData();
            LODOP.PRINT_SETUP();
        };
        function Design() {//打印設計 開發人員配置 內容和位置
            CreateLicenseData();
            LODOP.PRINT_DESIGN();
        };
        function CreateLicenseData() {
            LODOP.PRINT_INIT("查詢報表");
            LODOP.ADD_PRINT_HTM(20, 40, 610, 900, document.all("content").innerHTML);
            LODOP.PREVIEW();
        }
    </script>  

許多 時刻 ,我們 也沒的內容,都是議決 CSS來控制美觀的,因此有時刻 ,我們 打印部分HTML,沒有這些樣式的話,那麼出來的Table格式和字體,可能都會發生改動 ,不太好看。那麼就需要 執行 HTML的樣式配置 。app

假如 給打印內容配置 了樣式,那麼出來的界面成效 就好許多 了。框架

配置 樣式的代碼以下所示。ide

<script language="javascript" type="text/javascript">
        function Preview() {//打印預覽
            CreateLicenseData();
            LODOP.SET_SHOW_MODE("PREVIEW_IN_BROWSE", 1);
            LODOP.PREVIEW();
        };
        function CreateLicenseData() {
            LODOP.PRINT_INIT("申請處理單");
            var strBodyStyle = "<link type='text/css' rel='stylesheet'  /><style><!--table { border:1;background-color: #CBCBCC } td {background-color:#FFFFFE;border: 1; } th { background-color:#F1F1F3;padding-left:5px;border:1}--></style>";
            var strFormHtml = strBodyStyle + "<body>" + document.getElementById("content").innerHTML + "</body>";
            LODOP.ADD_PRINT_HTM(20, 40, 610, 900, strFormHtml);
            LODOP.PREVIEW();
        }
    </script> 

下一篇繼續推選下證件套打的打印功能。函數

出處:http://www.educity.cn/develop/1678911.html字體

相關文章
相關標籤/搜索