asp.net 打印控件使用方法

打印的效果及控制性虽然不是很好,可是也能勉强使用,应付通常的打印仍是 能够的了。
代码以下所示: 
代码 javascript

  复制代码 代码以下:php

//调用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文件中,在页面内容中经过应用该脚本文件并调用进一步封装的函数便可打印指定部分的内容: 
css

  复制代码 代码以下:html

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

打印的效果大体以下图所示,若是打印的页面在框架页面中,那么须要选定“仅打印选定框架”的选项。 java

采用此种方法,不须要安装任何控件,具备很好的兼容优点,不过出来的报表内容,好像控制起来会比较麻烦一些,特别对于一些报表方面的打印,须要输出复杂的内容是,也有必定的缺陷,但整体来讲,也是一个较好的选择。app

  后来在须要作一些证件套打方面的工做,这个控件就作不到了,所以须要一种方法或者控件,可以较好处理套打方面的事情。框架

  无心间,发现一个比较好的打印控件,支持各类格式的打印,还有我关心的证件套打功能,功能强大,使用也很简单的,很是值得推荐。ide

  控件的相关地址:函数

  控件下载字体

  控件博客介绍:

  应用这个控件,普通报表的打印效果以下所示:

上面两个报表的打印其实都差很少,都是打印部分的HTML内容,不事后者看起来要好一点,并且提供很完善的报表功能设置。

  代码大体以下所示。
代码 

  复制代码 代码以下:

<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的样式设置。 

若是给打印内容设置了样式,那么出来的界面效果就好不少了。

设置样式的代码以下所示。 
代码 

  复制代码 代码以下:

<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/687480.html