中国DotNet俱乐部
Asp.Net
 有关在.net webform环境下打印解决方案的总结
快速发贴   快速投票   快速回复
 *贴子主题: 有关在.net webform环境下打印解决方案的总结 [Asp.Net]    ==>推荐此贴子给朋友
该用户目前不在线 user139

等级: 五年级
贴数: 40
积分: 159
来自: 我不知道呀,您把您的IP及显示信息发邮件给我吧
察看user139的个人信息

最初解决WEB打印的出发点很简单,即把生成的客户端HTML按程式代码所定义的格式打印出来。如自定义页首尾,报表首尾,页边距,纸张,等等。其实这也是在WEB应用上最最常用的打印需求,当然,这不会很专业,但是可以解决一般的应用管理系统需求。通过不断的调试以及性能分析比较,大致总结了各个打印解决方案的优劣,以备参考:

一、利用IE内部打印组件:
这个方案也许是最简单的,当然不会很“专业”。我们假设客户端是IE6.0版本,因为在IE6.0中才完全体现我们所要应用的“打印模板机制”。它在精确控制页面边界,文本间隔,以及打印的统一性上,功能更为完备。
  至于这种方案的实现也相当简单,它主要只涉及到DEVICERECT,LAYOUTRECT两种行为方式,分别用来定义整体页面风格及单个页面内容风格。而我们所要打印的HTML可以通过LAYOUTRECT的CONTENTSRC属性来指定。可喜的是即使我们有1000个页面要打印,也可以简单的通过我们的打印模板添加动态修建HTML功能,实现单模板控制多文件风格。(请参考本文所附代码)。这个方案在CSDN有详细的介绍,但没有附示例。示例文件可以在MSDN上下载得到。


二、利用外部DLL打印组件:

  此类方案实现倒也不很复杂,只是利用DLL本身内部类函数操作,创建报表、格式并进行打印,而无需考虑内部实现环节。但对于WEB打印来说,似乎不合适。我个人认为在WEB上创建报表的HTML,然后利用客户端IE打印是最好的解决方式。而如果你的C#或VB不是很好,那么外部DLL的类型解决是一个很让人头疼的事情,何况还要应用到WEB环境下。这种方案我用傻儿的打印组件调试过,但没成功。

三、利用外部OCX类控件
  这类方案和第二种差不多,也是建立在别人的成果的基础上,但是在ASP.net下,如果没有这个控件的说明书,我相信你也会和我一样,不知道该从哪里下手开始设计。

四、利用XML解析打印
  这种解决方案在微软家园有很详细的介绍,其原理就是解析出定义好的XML格式标记,解读出文件中标记的参数定义,最后将这些信息还原成打印机输出的图形格式。很简单的理解,例如你要打印一个简单的表格,那么我们将表格解析成为文本和表格两部分,程式设计时我们遇到文本文本则输出文本到打印机,遇到表格标签即输出LINE到打印机。如此你可以自定义一些特殊的标签,如图片,特殊形状等。这种方案开发起来很简单,而且很“专业”,不过其缺点:客户端需要安装.NET FrameWork.(傻了。。)

五、转化为PDF文件,利用PDF打印
  转化为其它类型的文件输出,是打印方案很常用的一种方式,而PDF文件格式以其优异的“品质”(打印品质)和“性能”(应用功能)无疑是一种很经济的方式。而且从WEB向PDF转换不是很困难,资源占用也不是很严重,这是它在同类方案中的优点,也是异类方案中的缺点。如此你可以去PDFCHINA上搜寻相关可用信息。

六、利用外部设计器设计报表,内部程式码控制打印
  这里我针对思路来讲这种方案,并针对VISUAL DESIGNER报表组件。我们预先得利用设计器做好报表的格式,尔后在程式码里面住报表各表单“套值”,就这么简单。有点像ACCESS里面的报表设计方式。我所在公司的管理系统就是ACCESS写的,所以我其实挺喜欢这种方案。至于VISUAL DESIGNER可以在CSDN下载到,并有开发说明书。

七、自己写专业报表打印组件
  这是逼不得已的作法,当然更符合自己的要求,但是如果你不是专业的开发人员或有其它特殊目的,这些时间就不要花了。很罗索的。如果你有兴趣写,那么我建议你先看看第五种方案的思路和说明文档。

  WEB打印至今还没有完美的解决方案,我个人期待IE在这一方面再加改进,以方便我们这一群“劳苦大众”。

MSN:user139@hotmail.com
签名:王智集团
注:本文为nevis原创,不得随意转发。转发请注明出处:chinaaspx.com



---------------------------------------------------------------
             愛你的心 ^-^ 愛你的人
          愛你的一顆心   愛你的整個人
                       
                     ====== Hey,wait,take me=

发贴:2002-11-19 11:13:00IP:000.000.*.*得分:0

快速发贴   快速投票  
用户名 您没有注册?
密码 忘记密码?

内容

[html]可执行代码标签[/html]
[code]不可执行的代码标签[/code]

Welcome to 我要旅游网,e路上有我...

 国信商务 版权所有© 2001-12-05
Goldsina.com All Rights Reserved
| 程序设计:Wyhw
(最佳浏览器分辨率1024*768)