windows打印处理器管理解决方案.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows打印处理器管理解决方案  从需求出发,我们的目的是在电脑上提供一个虚拟打印机,然后让用户选择这个虚拟机打印时产生的中间文件被拦截下来,之后进行进一步处理后在执行真实的打印。  首先附上查找Windows打印相关内容的链接,这个分类下包含了Windows打印的方方面面  Windows2000以后的打印体系结构都是由一个打印机假脱机程序(Spooler)和一系列的打印驱动组成。应用程序通过调用设备无关的函数,就能创建打印任务,并发送到打印设备中。包括激光打印机、矢量绘图机、光栅打印机和传真机。  其中打印驱动包括一个渲染组件和一个配置组件。  渲染组件负责将应用程序传来的每一页的绘制命令(GDI命令)转换成打印机用来渲染的命令数据(打印机才能识别的命令)发送到打印机中。  配置组件又包含一个可以让用户进行打选项配置的用户接口组件和一个将打印机的配置和特征传递给应用程序的程序接口。  当GDI程序执行打印时,通过调用API来传递GDI绘图指令到绘图引擎,绘图引擎要么和打印驱动一起合作来缓存这些绘制指定到一个EMF文件中,要么直接渲染成一个可打印的图片发送到spooler中。Spooler解释EMF文件,并将页面布局和作业控制指令信息插入到数据流中,然后发送这些数据里到序列化、并行化或者网络形式的打印机关联的端口上。(XPS设备会有一点不同,这里不进行介绍)。  由于Spooler和打印驱动都是可以被单独取代,所以硬件厂商们可以很容易的增加对新硬件的支持。当需要增加对新款打印机的支持时,通常只需要创建根据微软所提供的打印驱动类型中相关联的数据类型就可以了。  下图是Windows提供的内置打印驱动程序:  ?  大致了解了Windows打印体系组成之后,来分别看一下Spooler和打印驱动。  从Windows2000开始,打印假脱机程序由一系列的微软提供的和可选的渲染组件组成,他们的作用包括:  1、检测是否打印任务是在本地处理还是跨网络处理。  2、接受GDI和打印驱动为特定类型的打印机所提供的数据流。  3、缓冲绘制数据到文件中。  4、从逻辑打印队列中选出第一个有效的物理打印机。  5、将缓冲的数据流(如EMF)转换成能呗打印机硬件所识别的格式(如PCL)。  6、发送打印数据流到打印机硬件中。  7、为假脱机组件和打印机的相关信息维护一个基于注册表的数据库  ?  Spooler主要组成结构如下图所示:  Application通过调用GDI函数来创建打印任务,通过调用Winspool.drv提供的API接口,将打印内容路由到PrintProvider中。  PrintProvider负责管理本地打印和远程打印,同时要管理打印任务堆里的启动、停止和枚举打印队列。  我们这里只讨论本地打印流程,它提供了下面的能力:  1、打印任务缓冲和解析到打印队列  2、为Win2000以后的操作系统的打印驱动体系提供支持。  3、为厂商提供的打印处理器的提供支持  4、为场上提供的打印监视器的提供支持  下图提供了本地打印任务处理流程:  如图所示,应用程序通过GDI接口创建打印任务后,不管是否需要输出为EMF,本地的PrintProvider任务创建API都会创建一个spool文件。然后,当任务被调度的时候,通过读取这个spool文件,如果是EMF格式的话,就让EMF打印处理器配合打印机的渲染驱动,将打印任务发送回去给GDI转换成RAW格式,最后和没有使用EMF格式的任务一样,将数据流传递到端口监视器中执行最终打印。  我们通过定制自己的打印机,让整个打印流程走如上图中红线描述的路径,在打印处理器这一层拦截spool文件及其相关打印信息,来保留整个打印任务的相关数据,等待后续进行处理。  Windows提供了三种类型的打印驱动,分别为:Universal Printer Driver、PostScript Printer Driver、Plotter Driver。原则上来说这三种类型的驱动已经能支持大多数打印机了,我们只需要简单的为新的打印机提供对应驱动的DataFile即可。我们这里只讨论Universal Printer Driver。  Universal Printer Driver由三部分组成:  1、Printer Graphics DLL: 负责和GDI一起渲染打印任务,并发送渲染数据流到打印假脱机程序中。  2、Printer Interface DLL: 提供打印机参数配置接口和假脱机能调用的用于通知打印系统事件的接口。  3、Printer Data Files:对于Universal Printer Driver而言,这个数据文件就是GPD文件,它用于创建UnidrvMiniDrivers,主要用

文档评论(0)

152****7770 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档