sheldon 发表于 2009-3-24 13:39:59

远程接入最关键的问题-虚拟打印的原理和实现

远程接入软件,客户最关心的焦点问题就是打印问题。现就极通EWEBS产品做例子,做个说明,目前来说极通EWEBS的打印问题解决的比较不错。

       在传统的远程接入环境中,当应用程序在服务器端运行时,如果用户需要打印文档到本地连接的打印机上时,一般有两种处理方法:原生打印驱动和通用打印驱动。

       原生打印驱动是指在服务器端安装客户端使用的打印驱动,当用户提出打印需求时,调用服务器端的Spooler服务,使用服务器端安装的驱动程序生成EMF文档传送到客户端,再由客户端的Spooler服务调用本地安装的驱动程序打印EMF文档,这样操作的优点是打印效果等同于客户端本地打印的效果,但是也有很多的不足。

       首先原生打印要求服务器端安装所有客户端需要使用的打印驱动程序,这将消耗服务器端的大量资源;其次是EMF文档会占用服务器端大量的磁盘空间,在通过网络传送到客户端时,会占用大量的网络带宽;EMF文件和驱动程序对应,只能在特定的打印机上打印,兼容性较差;多用户调用服务器端Spooler服务,易死锁,当一个用户的打印作业没有响应时,所有的打印作业都将停止;最后就是易窜打,因为传统的打印机映射是基于用户的,当多人使用同一用户帐号执行打印时,经常会把文档打印到其他用户的打印机上,这种现象在Power users等特权用户组成员打印时发生的机率更高。

  为了解决这些问题,有些远程接入厂商尝试使用通用打印驱动,在服务器端不再安装客户端使用的打印驱动,而是使用兼容性高的通用打印驱动,如用HP 6L驱动程序来代替原生打印驱动,使用通用打印驱动生成EMF文档传送给客户端,这样操作解决了兼容性和服务器端安装大量驱动的问题,但是对于原生驱动打印的EMF文件占用大量磁盘空间和网络带宽、Spooler服务易死锁及易窜打的现象没有解决,同时还产生了新的缺点:打印质量差,特别容易出现打印错位、字体出错的现象,而且由于通用驱动的缺点,不能使用打印机提供的其他特性,如不能支持有些打印机设备的高dpi设置。

  为了解决上述问题,EWEBS中采用了虚拟打印技术,在服务器端不再安装原生打印驱动或通用驱动,直接使用虚拟打印把用户要打印的文档生成xpdf文件,并把xpdf文件传送到客户端,使用客户端的打印驱动进行打印,一举解决了困扰多年的打印问题,其优点如下:

· 不要求服务器安装众多驱动程序;
· xpdf文件可以直接打印,不存在兼容性问题,打印质量好,打印结果等同于客户端本地打印结果;
· 无需产生和传送EMF文件,生成的xpdf文件大小仅为EMF文件的1/5,节约网络带宽;
· xpdf文档生成在内存中,不再像EMF文件一样占用服务器硬盘空间;
· 由于引入队列管理机制,多用户调用服务器Spooler服务,不易死锁,即使有用户打印作业没有响应,也不会影响其它打印作业;
· EWEBS 2008中打印机和会话关联,解决了多人使用同一帐户打印易窜打的问题;
· 打印速度快,无需文件传送完成再打印,可以传完一页打印一页,显著的提高了打印速度。

fly火 发表于 2009-3-24 14:59:15

不满意天翼的地方就是打印问题,现在装上这个试下。。如果效果好就换这个了。。谢谢楼主的文章

bus555 发表于 2009-3-25 15:36:56

用虚拟打印是方便很多啊。

虚拟 发表于 2009-3-25 16:09:57

虚拟化将是未来发展的趋势啊

musicone 发表于 2009-3-26 10:06:09

谁解决了远程打印问题,谁就是远程打印市场上的老大....

myapp 发表于 2009-3-26 20:05:50

回头试用下,这个问题比较头疼。
页: [1]
查看完整版本: 远程接入最关键的问题-虚拟打印的原理和实现