程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Web打印的解決方案之普通報表打印

Web打印的解決方案之普通報表打印

編輯:關於ASP.NET

做過很多的Web項目,大多數在打印頁面內容的時候,采用的都是通過Javascript調用系統內置的打印 方法進行打印,也就是調用 PrintControl.ExecWB(?,?)實現直接打印和打印預覽功能。打印的效果及控 制性雖然不是很好,但是也能勉強使用,應付一般的打印還是可以的了。

代碼如下所示:

//調用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==null||preview==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==null||preview==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文件中,在頁面內容中通過應用該腳本文件並調用進一步封裝的函數即可打 印指定部分的內容:

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved