由于在Fineui 的项目中我需要打印报表和一些标签(不干胶标签,有条码,2维码),因为程序可能要给不同的客户使用报表和标签可能会有区别,所以希望可以把报表设计成模板,直接提取数据打印即可(不同的客户只需要变化模板就可以了,代码不需要修改)。看了很多WEB打印控件都觉得不是很方便,很早以前我用个一个叫 “楚林web打印控件”感虽然只支持IE,但是感觉还是很好使用的不仅可以制作模板,还可以用他的打印预览功能导出各种格式,比如 TIF ,pdf,exel等。所以打算使用这个控件。下面看代码吧,也比较简单,虽然不是很完美但是可以使用就好。 (截图不清晰)
在前段页面的Toolbars中放置两个按钮一个预览一个打印。
需要注意的就是 红色的部分因为后台要使用Response.Write 输出相关的js代码。
<f:Button ID="Button_Preview" runat="server" Icon="magnifier" Text="预览" OnClick="BtnDepositPreview_Click" EnableAjax="False" />
<f:Button ID="Button_Print" runat="server" Icon="printer" Text="打印" OnClick="BtnDepositPrint_Click" EnableAjax="False" />
后台
protected void BtnDepositPreview_Click(object sender, EventArgs e)
{
ddgz.BLL.YP bll = new ddgz.BLL.YP();
string FileValue, PrintValue, ParaName, ParaValue;
FileValue =Print.FileToString("..\\..\\Frp\\YP1.fr3");
ParaName = "ShopName`~PrintDepositAdd`~PrintPaperNo`~Title"; //`~为各参数的分隔符
ParaValue = "测试酒楼"
+ "`~说明:本单据为贵客押金收取凭证,盖章有效。退房时请出示,遗失者自负,请妥善保存。退房时间为12:00时,延时退房18:00时以前按半天房费收取,18:00时以后算全天房价。押金单有效期为一个月,过期作废。 贵重物品请交前台寄存,未寄存丢失自负。 谢谢!"
+ "`~身份证:4325011980639512"
+ "`~押金单";
DataSet printDS = bll.GetList("Djlsh=1");
PrintValue = Print.TableToXml(printDS.Tables[0]);
printDS.Dispose();
string ScriptStr;
ScriptStr = "<script language='javascript'>window.onload = function() { try { var ObjPrintMange = new ActiveXObject('WebPrint.WebPrintUnit'); } catch(e) { if( confirm('打印控件未安装,现在下载吗?') ) { window.location='./PrintActivex.exe'; } return; } var OldVersion=ObjPrintMange.Version; NewVerion='5.0(2011-08-01)'; if(OldVersion < NewVerion) { ObjPrintMange = null; alert('打印控件需升级。请先进行下载,下载后关闭IE,然后安装升级版。'); window.location='./PrintActivex.exe'; return; } "
+ " ObjPrintMange.CheckReg('一铭软件[15000097030]', 'AA2D538A9B997A2ACD28FC56408C9BF8'); " //注册码
+ "ObjPrintMange.ShowReport('"
+ FileValue + "' , '"
+ ParaName + "', '"
+ ParaValue + "', '"
+ PrintValue + "', '', '', '', '', '');"
+ "ObjPrintMange = null; } </script>";
// ScriptStr = "'" + FileValue + "' , '" + ParaName + "', '" + ParaValue + "', '" + PrintValue + "'";
ScriptStr = ScriptStr.Replace(System.Environment.NewLine, string.Empty);
Response.Write(ScriptStr);
}
protected void BtnDepositPrint_Click(object sender, EventArgs e)
{
ddgz.BLL.YP bll = new ddgz.BLL.YP();
string FileValue, PrintValue, ParaName, ParaValue;
FileValue = Print.FileToString("..\\..\\Frp\\YP1.fr3");
ParaName = "ShopName`~PrintDepositAdd`~PrintPaperNo`~Title"; //`~为各参数的分隔符
ParaValue = "测试酒楼"
+ "`~说明:本单据为贵客押金收取凭证,盖章有效。退房时请出示,遗失者自负,请妥善保存。退房时间为12:00时,延时退房18:00时以前按半天房费收取,18:00时以后算全天房价。押金单有效期为一个月,过期作废。 贵重物品请交前台寄存,未寄存丢失自负。 谢谢!"
+ "`~身份证:4325011980639512"
+ "`~押金单";
DataSet printDS = bll.GetList("Djlsh=1");
PrintValue = Print.TableToXml(printDS.Tables[0]);
printDS.Dispose();
// ConPrintTest.Close();
string ScriptStr;
ScriptStr = "<script language='javascript'>window.onload = function() { try { var ObjPrintMange = new ActiveXObject('WebPrint.WebPrintUnit'); } catch(e) { if( confirm('打印控件未安装,现在下载吗?') ) { window.location='./PrintActivex.exe'; } return; } var OldVersion=ObjPrintMange.Version; NewVerion='5.0(2011-08-01)'; if(OldVersion < NewVerion) { ObjPrintMange = null; alert('打印控件需升级。请先进行下载,下载后关闭IE,然后安装升级版。'); window.location='./PrintActivex.exe'; return; } "
+ " ObjPrintMange.CheckReg('一铭软件[15000097030]', 'AA2D538A9B997A2ACD28FC56408C9BF8'); " //注册码
+ "ObjPrintMange.PrintReport('"
+ FileValue + "' , '"
+ ParaName + "', '"
+ ParaValue + "', '"
+ PrintValue + "', '', '', '', '', '');"
+ "ObjPrintMange = null;} </script>"; //window.location转向新的网页
ScriptStr = ScriptStr.Replace(System.Environment.NewLine, string.Empty);
Response.Write(ScriptStr);
}