一 基于Web的打印方案比较分析--------------------------------
基于web的套打,难度在于要将浏览器中呈现的html,精确地打印到票据中,并且可以实现对分页位置的控制。下面就ie浏览器所能采用的套打解决方案,来个汇总分析,但愿对你们有所帮助。
1、浏览器的打印功能菜单
这种方案的优点是不须要对浏览器做任何扩充,是最简单的办法,但问题也最多,如:
不能精确分页。浏览器通常是根据用户设置的页面大小,web页面的内容多少,来自行决定分页位置,程序员很难控制。会有页脚页眉干扰。
不能准确对齐边边距及打印文字。
不能解决连续打印。好比,不是仅打印一张票据,而是连续一次打印若干个票据。
2、使用webbrowser控件+ javascript
这实际上,是浏览器打印功能菜单的一种程序调用,与打印功能菜单没什么两样。分页的问题仍然存在,只不过,可让用户不用去点菜单,直接在网页中的一个按钮,或一个连接里面调用罢了。
三 、使用print css
这是一种最理想的实现web套打的方法。这种方法经过在html文档中,嵌入打印相关的css样式,来实现对html文档输出打印的控制,好比设置纸张大小,纸张纵横方向,打印边距,分页等。显而易见,这种方式成本小,不须要下载任何插件,并且跨平台性很是好。print css推出已经有些时日,但遗憾的是,至今没有一个厂商的浏览器很好地实现了这些标准,这使得程序员目前还不能利用print css进行实际的开发。关于打印css,参见http://css-discuss.incutio.com/?page=PrintStylesheets
四 、使用PDF文件
用这种方式,就是从服务器端下载一个pdf文件流,在IE中用adobe插件打开,而后用adobe的打印菜单进行打印,虽然这种方案,也能实现精确套打,但须要下载adobe插件。这是国外报表工具常常推荐的一种打印方法,但在pdf不那么普及的中国,这种方案不是最好选择。
五 、采用纯ActiveX
这种方案就是下载一个控件,票据的数据再也不以html方式呈现,而是呈如今ActiveX中。这种方案的优势是打印的精确度高,分页的可控性好,但缺点也是很明显的,嵌入ActiveX控件破坏了web应用的总体html风格,且这样的控件比较大(通常超过1M),下载颇费时间)。市场上的非java类报表产品,通常都采用这种方案。
六 、采用Applet方式
采用Applet方式,分页或精确打印,均可以作到完美,但缺点也很明显,表如今:
安装Applet成本巨大。须要下载十几M的文件。
打印报表时,须要从新向服务器检索数据,效率低。由于Applet方案,通常采用html方式呈现数据,打印时Applet必须向服务器检索同一张票据的数据,看上去,是打印了当前页的票据,实际上,Applet根本不会用当前html页的数据来打印,而是向服务器下载数据到Applet中来打印。也就是说,打印的话,必须两次请求,一次html呈现,一次用来打印。
不能解决连续打印。好比,不是仅打印一张票据,而是连续一次打印若干个票据。
不能解决打印机设置问题,如存在多台打印机时,老是须要手工选择,打印到哪一台打印机。
市场上java类的报表工具,通常推荐Applet方式来实现打印。
七 、轻量级的ActiveX打印方式
-----ScriptX-----
ScriptX的免费版本好点,已经能知足大部分的需求.
MeadCo's ScriptX控件有两种使用方式,一种是作为免费版本使用,一种是作为收费版本使用,免费版本支持的功能要少些,不过最重要也是最经常使用的页面设置,它仍是提供的,所以使用免费版本便可。不过这两个版本用的都是同一个cab文件,只不过在代码设置中有一些不一样。
-----PAZU (四方)-----
PAZU 我的或者商业使用均真正免费受权,无IP或者域名限制。
PAZU自2009年6月起采用免费的许可,申请时,您必须有肯定的IP地址或者域名(主机名),PAZU是绑定IP或者域名的,IP或域名还没有肯定的咱们不能颁发受权,另外,受权一经颁发就不能修改绑定。 绑定的IP和域名必须是最终用户的,因此,最终用户的应用网站必须和4Fang网站作好连接,不然 PAZU会由于没法验证受权的合法性而不能正常工做(内网应用除外)。
企业能够购买开发集成版(适合项目集成或者产品开发公司,提供KeyGen工具,本身生成许可受权,不限制发行)
-----jatoolsPrinter(杰表.打印控件)-----
免费版本只能在192.168.*** 网段使用,2.0以前的版本有免费版本,2.0以后是收费的。目前最新版本是4.2.他们能够经过web脚原本选择输出打印机,纸张大小,打印方向等,没必要每次手工设定。
价格请看:http://www.jatools.com/print/howtobuy.htm
对于简单的打印,咱们用IE的功能就能够了,对于须要复杂的设置的,建议使用轻量级的ActiveX打印方式。在接下来的系列教程里,咱们会一一介绍。 javascript