当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET之Web打印-终极解决篇

ASP.NET
C# Quoted-Printable编码、解码
asp.net Google的translate工具翻译 API
.NET读取所有目录下文件正则匹配文本电子邮件
asp.net 半角全角转化工具
AjaxControlToolKit 显示浏览者本地语言的方法
asp.net HTML文件上传标签
ASP.NET 绑定DataSet中的多个表
ASP.NET 重定向的几种方法小结
Asp.Net 重定向必须要知道的一些资料
ASP.NET 导出到Excel时保留换行的代码
Asp.Net Cache缓存使用代码
document.getElementsByName和document.getElementById 在IE与FF中不同实现
GridView单元格合并
asp.net 大文件上传控件
asp.net 日期函数 某月的第一天和最后一天的日期
asp.net 时间类 一周的周一和周末的日期
C# javaScript函数的相互调用
asp.net membership 密码重设
"虚拟路径"..."映射到另一个应用程序,这是不允许的!
如何传值在2个页面之间 要求不刷新父页面,并且不能用Querystring传值

ASP.NET之Web打印-终极解决篇


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 173 ::
收藏到网摘: n/a

ASP.NET之Web打印-终极解决篇
做过bs开发的同志应该都深有体会,在web程序中打印不再象应用程序中那样便于控制了,web程序天生的一些特性造成了这个缺点,如:打印机在本地,而文件确可能在服务器上;格式如何控制和定制等等。都给我们开发中带来了很多问题,虽说有水晶报表等控件来解决但总归是不方便。当然有了问题就会有人来研究解决,这里我先对目前流行的几种方式做个简单介绍:
1、IE直接打印
这个不用多说,直接调用window.print或者webrower控件的ExecWB方法来打印。方便快捷,客户端无需任何设置即可。利用一些办法也可以实现简单的定制,比如做一个模板htm文件,然后在js中动态创建一个隐藏帧来,用脚本来生成其中的数据,再把最后的结果文件写入到隐藏帧打印处理。如果处理的好,实际上效果也是不错。对于简单的打印需求应该是够了。这里我举个实际中的例子来说明这种方式:
开发中经常需要打印一些统计的结果给用户,比如说一个常见的功能是营业报表类的打印:操作员先输入查询条件,然后提交得到查询的结果,点击打印后,按照定义好的格式打印报表。
我们实现上大部分情况会把查询的结果绑定到DataGrid上来,然后打印DataGrid。这种情况的打印一般来说格式比较固定简单,确定后基本不会再作更改。所以可以采用IE直接打印,但若直接调用window.print来打印页面,页面上别的元素也会被打印处理,页头页尾的格式也不好控制。

2、ActiveX控件
自己开发控件。这种方式很多商用软件采用这种方式,写成控件后已经无所谓是在web中使用还是应用程序中使用了。打印方式非常灵活,基本上程序能做到的web也能做得到。但客户端需要安装组件,部署不是很方便。
3、.NET组件

卢彦写过一篇很好的文章《利用XML实现通用WEB报表打印》,相信大家都看过了。思路新颖,实现简单,确实不失为一种通用WEB打印解决办法,尤其利用XML来描述打印文件的方法给以后的格式的拓展留下很好的接口,非常容易扩充。这种打印方式对于格式变化大,数据量小的应用来说非常合适。这种思路也给了ASP.NET上打印的一种新的思路:自定义一些组件来实现灵活的打印功能。当然缺点也是显而易见:1、需要客户端安装NET framework1.0组件。2、XML的解析上,如果文件较大速度上不是很理想。3、页面首次加载时会有明显的延时。

先列个条目,明天继续写