打印程序开发资料

2020-05-06 11:12

基于组件模型的虚拟打印系统的研究与实现

虚拟打印是利用某种方式截获操作系统的打印任务,将打印任务转换为图像文件并保存在指定目录的系统。通过虚拟打印系统,用户可以将任意可打印的文档转换为统一的图像文件,由一种应用程序进行浏览。因此在Web环境、多客户端情况下,客户端不需要为浏览多种应用程序的文件而安装多种应用程序,便于实现瘦客户端和降低系统的软件成本。本文通过研究比较现有的虚拟打印系统,提出建立基于组件模型的虚拟打印系统,主要介绍的技术包括:虚拟打印机的实现、虚拟打印机的安装卸载、系统二次开发接口等。

1 Windows打印系统结构

虚拟打印基于Windows打印体系,是对Windows打印系统的一种应用及拓展。微软的Windows NT系列打印体系结构由打印假脱机和一套打印驱动程序组成。

应用程序对Win32 GDI函数的调用传送到GDI图形引擎,GDI图形引擎可以将绘制指令假脱到一个EMF文件中,或者与打印驱动程序连接,向假脱机绘制一个可打印的图像。假脱机组件解释EMF文件,他们可以在数据流中插入页面布局信息以及作业控制指令。然后假脱机将数据流发送给具有目标打印机I/O端口的串行、并行或网络端口的驱动程序。其体系结构如图1所示。

2 虚拟打印系统的研究

按照获取打印任务方式的不同,可以将虚拟打印系统分为3种类型:重写Print Processor,在假托模块中实现转换,例如Mabuse.De的VPrinter;采用回调机制在打印任务发送到Spoolez之前获取打印数据流,例如NortheastData公司的Image Printer Driver;通过监视Port Monitor获取打印任务数据,例如Adobe公司的Adobe AcrobatWriter。

目前绝大部分虚拟打印系统都是独立的系统,使用各自的文件格式来保存打印结果,很少以组件的方式提供二次开发接口,使得上述虚拟打印系统很难与其他应用系统进行集成。本文研发的基于组件模型的虚拟打印系统,采用重写Print Processor方式实现打印任务的获取。该系统提供了丰富的二次开发接口,可以按照应用系统集成商的要求提供文档转换功能,最大限度地降低了应用系统的成本。

3 虚拟打印系统的实现

基于组件模型的虚拟打印系统主要包括2部分:打印机驱动程序模块和二次开发接口模块。其体系结构如图2所示:

3.1 获取打印任务

打印任务的截取,是整个虚拟打印系统的关键部分。从图1中可以看出,Print Processor负责将打印任务处理后发送到Port Monitor,Print Processor是一个可替换的DLL,安装DDK中的约定,实现以下6个函数,就可以自定义一个Print Processor。

(1)EnumPrintProcessorDatatypes,该函数主要处理并返回打印处理器所能处理的数据类型;

(2)ControlPrintProcessor,该函数主要提供方法供用户控制打印处理器,如停止、删除、重新开始打印任务等;

(3)GetPrintProcessorCapabilities,该函数主要供Windows系统获取针对某种输入数据的处理能力;

(4)OpenPrintProcessor,返回该打印处理器的句柄给系统;

(5)PrintDocumentOnPrintProcessor,处理打印任务,将处理后的数据发送到Port Monitor或者转换为图像文件等;

(6)ClosePrintProcessor,关闭打印处理器。

图3详细说明在PrintDocumentOnPrintProcessor中如何将打印任务转换为图像文件的过程。

3.2 生成指定格式、大小的图像

虚拟打印系统获取的打印页面原始数据是EMF矢量图形文件。如果转换前的文档中没有大量的图片信息,那么转换后的EMF文件是比较小的,一般1页Word转换后在20~50 k大小。因此本系统提供了配置接口供用户选择最终保存的图像格式,目前支持JPG,GIF,PNG等常用的图像格式。可以按照如下方式修改图像的格式和大小:

[ImageInfo]

ImageWidth=1024

ImageHeight=768

ImageType=JPG

以上信息设定后,转换生成的图片为JPG格式文件,图片宽为1 024 pixel,高为768 pixel。

3.3 封装组件,提供二次开发接口

二次开发接口是虚拟打印系统提供给第三方应用系统调用或设置的方法。良好丰富的二次开发接口,使得本系统可以快速便捷的与第三方应用系统进行集成,大大提高系统的应用范围。按照组件模型的思想,本系统中将二次开发接口封装成Activex组件,使得用户可以通过简单的JavaScript调用接口方法。

3.3.1 安装、卸载打印机接口

一般采用由最终用户通过在控制面板中选择添加打印机的方式来安装打印机。这种方法对最终用户要求比较高,不适合大规模的应用。因此,封装了一个Acitvex实现打印机的安装和卸载,使得第三方应用系统可以非常方便地安装、卸载虚拟打印机。该Activex提供以下2个方法:

(1)InstallVirtualPrint,实现安装打印机,关键部分解释如下:

(2)UnInstallVirtualPrint,实现卸载打印机,关键部分解释如下:

3.3.2 打印机信息设置接口

为了方便第三方系统集成,打印机基本信息存储在系统INI文件中。集成用户按照标准可以非常方便地修改打印机的相关信息,例如:转换后图像文件的保存路径,当前文件的前缀等。


打印程序开发资料.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:建筑起重机械备案编号规则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: