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字体

相关文章
相关标签/搜索