CN102999299A - 在Windows打印过程中监控打印数据的系统和方法 - Google Patents

在Windows打印过程中监控打印数据的系统和方法 Download PDF

Info

Publication number
CN102999299A
CN102999299A CN2011102689138A CN201110268913A CN102999299A CN 102999299 A CN102999299 A CN 102999299A CN 2011102689138 A CN2011102689138 A CN 2011102689138A CN 201110268913 A CN201110268913 A CN 201110268913A CN 102999299 A CN102999299 A CN 102999299A
Authority
CN
China
Prior art keywords
print
print data
processing module
emf
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2011102689138A
Other languages
English (en)
Inventor
张勇
汪雷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING SOFTLUMOS TECHNOLOGY Co Ltd
Original Assignee
BEIJING SOFTLUMOS TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING SOFTLUMOS TECHNOLOGY Co Ltd filed Critical BEIJING SOFTLUMOS TECHNOLOGY Co Ltd
Priority to CN2011102689138A priority Critical patent/CN102999299A/zh
Publication of CN102999299A publication Critical patent/CN102999299A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

本发明涉及若干在Windows打印过程中监控打印数据的系统和方法。通过这些系统和方法,可以通用的实现Windows操作系统的打印过程监控、打印审批、打印内容过滤、预览和保存、条码和水印嵌入、重新打印、异地还原打印等功能,并且通用的解决了打印作业高级属性设置和打印机特性属性设置丢失的问题。

Description

在Windows打印过程中监控打印数据的系统和方法
技术领域
本发明涉及若干在Windows打印过程中监控打印数据的系统和方法。通过这些系统和方法,可以通用的实现Windows操作系统的打印过程监控、打印审批、打印内容过滤、预览和保存、条码和水印嵌入、重新打印、异地还原打印等功能,并且通用的解决了打印作业高级属性设置和打印机特性属性设置丢失的问题。
背景技术
Windows操作系统泛指微软公司推出的一系列操作系统。当前,微软发布的常规Windows操作系统(如:Windows XP,Vista,Windows 7等)均内置了打印管理系统,并且其架构自Windows 2000以来未发生本质改变,因此,本文所述之Windows打印管理系统,适用于Windows 2000及以上版本。
微软将Windows打印管理系统的体系结构设计得非常复杂,其目的是为支持不同类型打印机和兼容早期型号打印机。Windows NT/2000的打印体系结构以后台打印为基础,并由GDI和一套打印机驱动程序所支持。
图1描述了Windows打印管理体系GDI打印路径的方框图。为了能便于对流程的描述,先简单介绍一下图中出现的关键名词术语:
1.后台打印(Print SPOOLing)
SPOOL是Simultaneous Peripheral Operation On-Line(即外部设备联机并行操作)的缩写,它是关于低速输入输出设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。
SPOOLing系统既不同于脱机方式,也不同于直接耦合方式,SPOOLing技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。它在输入和输出之间增加了“输入池”和“输出池”的排队转储环节,以消除用户的“联机”等待时间。
宏观上,虽然是多个进程在同时使用同一台设备,而对每一个进程而言,它们都认为自己是独占了一台设备。当然,该设备只是逻辑上的设备。SPOOLing系统实现了将独占设备变换为若干台对应的逻辑设备的功能。
SPOOLing技术实质上是用户进程利用一个共享的存储区,并不是真正占用了此设备,用户进程把要完成的任务以文件的形式存入存储区,在存储区中排队并等待SPOOLing系统调度,只有被SPOOLing系统调度并输出,此项任务才真正完成,通过这一技术可以大大提高了共享设备的使用率,节约了硬件资源。
SPOOLing技术的典型应用就是后台打印(Print SPOOLing):特定格式的文件(打印作业文件)被保存在一个磁盘上,而打印系统根据自己的速度检索并打印这些文档。打印机通常一次只能打印一个文件,并且需要几秒或者几分钟完成一个文件的打印。有了后台打印系统,多个进程可以直接将要打印的文档放入队列中而不需要做任何等待。一个进程只要将文档放入打印作业队列(即人们通常所说的发起打印作业)就可以处理其他任务,因为有另外一个独立的打印进程来负责处理打印队列并操作打印机进行打印,直到打印队列为空。
在Windows系统中,微软将此功能称为“后台打印”,因此,本文中也将PrintSPOOLing称为后台打印。
2.打印处理器
打印处理器是Windows的后台打印体系中负责接收和处理打印作业的接口,即负责把打印进程放入后台打印队列中的打印格式文件转换到可送到打印机的原始数据格式,打印处理器也用于控制打印作业的暂停,恢复,取消。在Windows 2000/NT下,放入打印池中的打印格式文件一般是EMF格式的。GDI帮助应用程序把绘图请求记录成EMF格式,并把它快速写入磁盘,让应用程序回到正常操作的状态。
Windows打印处理器(在LOCALSPL.DLL中)支持几种打印池格式,包括NT EMF,RAW和TEXT。
3.打印作业数据格式
打印进程放入后台打印队列中的打印作业文件的数据格式,通常被称为打印作业数据格式。而其文件被称为打印作业文件。打印作业数据格式通常有EMF、RAW和TEXT这三种。
EMF数据格式是所有Windows应用程序的最常用打印作业数据格式。EMF打印作业文件通常比打印机能接收的原始数据小很多;RAW数据格式,指的是由打印程序直接生成可被打印机直接使用的数据,而不是由打印服务生成;TEXT数据格式:只包括ANSI文本,打印处理器负责把文本字符串生成打印机接受的数据格式。
结合图1和以上名词术语解释可以看出,Windows打印管理体系GDI打印路径的主要流程是用户应用程序调用GDI和后台打印客户DLL导出的API入口点启动打印作业,GDI和后台打印程序在打印机驱动程序的帮助下处理打印作业,并把数据发送到各种硬件拷贝设备,包括激光打印机,喷墨打印机,绘图仪和传真机。其详细流程如图2所示,说明如下:
1.用户发起一个打印作业
如果是EMF格式打印作业,用户应用程序对Win32 GDI函数的调用被Windows发送到GDI图形引擎(简称GDI),由其负责将绘图指令转换成增强型元文件(EMF)。此EMF文件和另一个包含当前打印设置的文件被传递给后台打印系统服务进程(SPOOLS.EXE)。此时,应用程序完成了自己的任务,而后台打印系统保证文档被打印。
如果是RAW格式打印作业,GDI把GDI命令分解成由DDI(device driverinterface,设备驱动程序接口)定义的绘图图元,并把绘图图元送到打印机驱动程序。打印机驱动程序将图元转换成打印机语言格式的原始数据(RAW格式数据),例如:PCL,ESC/P,POSTSCRIPT。
2.打印作业进入打印队列
后台打印进程把任务发送到打印提供者,打印提供者操作真实打印机。打印机可以是本地打印提供者(LOCALSPL.DLL)管理的本地打印机,也可以是通过Windows网络打印提供者(WIN32SPL.DLL)管理的Windows网络打印机。如果打印机在远程计算机上,Windows网络服务会把后台打印作业文件发送到远程计算机,然后远程计算机将其作为本地计算机的打印作业放入打印队列。
3.GDI回放
如果是EMF格式打印作业,本地打印提供者得到打印作业,并将它传递给打印处理器,打印处理器检查后台打印文件的格式。对于EMF文件,它将内容的每一页回放给GDI,GDI把GDI命令分解成由DDI(device driver interface,设备驱动程序接口)定义的绘图图元,并把绘图图元送到打印机驱动程序。打印机驱动程序将图元转换成打印机语言格式的原始数据(RAW格式数据),例如:PCL,ESC/P,POSTSCRIPT。
如果是RAW格式打印作业,因为已经是打印机语言格式的原始数据,则无此步骤。
4.输出至打印机
打印机语言格式的原始数据再次被送到后台打印程序的打印处理器中,处理器将其发送到语言监视器,语言监视器将数据送到端口监视器,端口监视器用Windows的文件系统API往硬件端口写数据,打印机解析数据并进行打印输出,整个打印作业完成。
从以上Windows的打印架构可以看出,在打印路径的各个节点进行注入(Hook)均可以实现打印过程的监控。主要方法有以下两种:
1.利用进程内注入(Hook)技术获得打印内容
首先,WINDOWS应用程序通常调用后台打印API来查询打印队列状态,控制打印作业,或往打印机发送数据。在系统默认的打印处理器支持的数据类型是:RAW,RAW[FFappended],RAW[FF auto],NT EMF 1.003,NT EMF 1.006,NT EMF 1.007,NT EMF1.008,TEXT。对于RAW格式打印作业,打印处理器用WritePrinter调用,在这种情况下,数据直接传到语言监视器。对于TEXT格式打印作业数据,打印处理器进行新的startdoc调用,并将GDI绘图命令发送打印机驱动程序,打印机驱动程序负责调用WritePrinter。对于EMF格式打印作业数据,打印处理器使用GDI的EMF回放机制把记录好的绘图命令发送到打印机驱动中。
这样的方式对于EMF和Text格式的打印作业有效,但是RAW数据格式的打印作业在打印处理器中无法获得内容,因此单纯的进程内注入(Hook)技术对于RAW数据格式的打印作业是完全无效的。
2.利用打印端口监视器中注入(Hook)技术获得打印内容
不论应用程序如何设置打印数据类型,利用打印端口监视器中Hook技术可以保证获得打印数据。但是当数据到达该层次时,已经是原始打印数据,又称为打印机就绪数据,是用打印机控制语言表达的,不同的打印机接收不同的打印机控制语言。也就是说,这里获得的数据已经是各种打印机语言。因此,在这个层次上实现打印数据的修改是非常复杂的,引发兼容性问题的风险很大。也就是说,此项技术不宜用于实现水印嵌入等带有打印内容修改的功能,同时也增大了实现打印作业预览的难度。
3.禁用物理打印机驱动,利用虚拟打印机获得打印内容
此方法可以保证打印作业为EMF格式,并且保证能获得打印内容。但是一个打印作业包含一个EMF文件和另一个包含当前打印设置的文件,此打印设置文件里面包含了一些不同打印机特殊的打印参数配置,而通过虚拟打印机获得的打印数据几乎无法做到完全匹配这些打印参数,因此,当用户打印文档,特别是图纸时利用到一些高级打印功能时,通过虚拟打印机再转换为物理打印机(如绘图仪)输出时将出现打印作业高级属性设置和打印机特性属性设置丢失的问题。
也就是说,现有技术存在着一定的局限性或兼容性问题,不能利用一项技术同时满足打印过程监控、打印审批、打印内容过滤、预览和保存、条码和水印嵌入、重新打印、异地还原打印的需求。
发明内容
本发明提出了若干在Windows操作系统打印过程中监控打印数据的系统和方法。此系统和方法可以从以下打印作业中截获并提取打印数据和对打印数据进行增加和(或)修改:
1.所有EMF格式打印作业
2.用户选择非EMF打印格式的打印作业
3.打印机默认使用非EMF格式的打印作业
相比其它注入(Hook)技术获得Windows打印数据而言,处理打印内容时无需处理对打印机语言的翻译,因此本发明做到了最佳兼容性和完整性。
另外,本发明还提出了一种利用多个打印作业打印文件的方法:此方法能够从公知的Windows操作系统的EMF打印作业中截获并增加和(或)修改打印数据,然后利用此打印数据替换或嵌入到另外一个打印作业的打印数据中。
另外,本发明还提出一种利用两个Windows系统的多个打印作业打印文件的方法:此方法能够从一个公知的Windows操作系统的EMF打印作业中截获并增加和(或)修改打印数据,然后在另外一个公知的Windows操作系统中利用此打印数据替换或嵌入到另外一个打印作业的打印数据中。
根据本发明的实施例,可以结合其他一些公知技术,实现打印过程监控、打印审批、打印内容过滤、预览和保存、条码和水印嵌入、重新打印、异地还原打印等功能。比如将提取到的打印数据由EMF格式转换成PDF格式,利用PDF浏览组件来实现打印内容的预览;或者在打印过程中往EMF格式打印数据中实时的嵌入二维条码或者文字/图片水印,实现打印审计追溯等功能;或者将提取的打印数据保存成文件,如果打印遇到错误,可以从文件获取此打印数据,然后在本地或异地发起一个打印作业并将其打印数据替换为需重新打印的打印数据,从而实现重新打印或异地还原打印功能;或者利用一个打印内容解析引擎,实时的分析打印数据中的文本,甚至是图片中的文本信息,然后根据一定的策略阻止用户打印出包含敏感信息的内容,从而实现打印内容过滤的功能;又或者在用户打印文档时,截获打印数据并转换成jpg、pdf等可阅读的格式,由审批人进行审批来决定此文档是否允许打印,从而实现打印内容审批的功能。
随后参考下列附图所示的具体最佳实施例,对本发明的其他特征和优点予以更详细的说明。
附图说明
图1是Windows打印管理体系GDI打印路径的方框图
图2是Windows处理打印作业的流程图
图3是未引入本发明实施例前Windows系统处理EMF格式打印作业时的方框图
图4是未引入本发明实施例前Windows系统处理EMF格式打印作业的流程图
图5是处理EMF格式打印作业时本发明实施例所涉及基本单元的方框图
图6是处理EMF格式打印作业时本发明实施例的流程图
图7是未引入本发明实施例前Windows系统处理用户选择非EMF打印格式打印作业时的方框图
图8是未引入本发明实施例前Windows系统处理用户选择非EMF打印格式的打印作业时的流程图
图9是处理用户选择非EMF打印格式的打印作业时本发明实施例所涉及基本单元的方框图
图10是处理用户选择非EMF打印格式的打印作业时本发明实施例的流程图
图11是未引入本发明实施例前Windows系统处理打印机默认使用非EMF格式的打印作业时的方框图
图12是未引入本发明实施例前Windows系统处理打印机默认使用非EMF格式的打印作业时的流程图
图13是处理打印机默认使用非EMF格式的打印作业时本发明实施例所涉及基本单元的方框图
图14是处理打印机默认使用非EMF格式的打印作业时本发明实施例的流程图
图15是处理打印作业的重打印时本发明实施例的流程图
图16是处理打印作业的印前审核时本发明实施例的流程图
图17是处理打印作业的异机打印时本发明实施例的流程图
具体实施方式
为了方便对本发明的原理和特征的理解,下文将参考一示范实施例的实施来予以说明。具体地来说,本示范实施例是以在本地硬盘上安装了Windows XP操作系统的标准PC计算机和一台兼容Windows系统的网络打印机作为设备场景,以Windows自带的Notepad作为用户打印程序来进行描述的。
但应理解,这不是唯一可以实施本发明的实施例。相反,本发明可以应用于各种不同的Windows操作系统,例如Windows 2000,XP,2003,Vista,7,2008;可以应用于不同的计算机环境,如台式机、笔记本、上网本、平板电脑等;可以应用于不同类型、型号和接口打印机,如U口/并口打印机、网络打印机,激光打印机,喷墨打印机,绘图仪和传真机等,严格来说可以是任意兼容Windows系统的打印设备。
本发明实施例涉及在Windows操作系统打印过程中提取、增加和(或)修改打印数据的系统和方法。根据打印作业的不同,本发明实施例的流程和模块略有不同,其核心思想是让所有打印作业都强制以EMF格式被生成,然后注入(Hook)打印处理器的引出函数PrintDocumentOnPrintProcessor函数,并在此关键位置对获取的数据进行相应的处理,因为数据格式为EMF格式,是微软内置支持的格式,可利用API自然的实现通用的处理。
在继续下文前,需要说明的是,因上文(背景技术部分)已做说明,下文一些重复出现的流程细节将不做赘述。
为了更清晰的描述,以下按打印作业的格式分为3种情况进行描述:
1.所有EMF格式打印作业
2.用户选择非EMF打印格式的打印作业
3.打印机默认使用非EMF格式的打印作业
对于EMF格式打印作业,未引入本发明实施例前Windows系统处理该类型打印作业的方式和流程如图3和图4所示。
图3显示了未引入本发明实施例前Windows系统处理EMF格式打印作业时的方框图。从图中可看出EMF打印任务将由打印处理器进行一次GDI回放,因此注入(Hook)打印处理器,替换其数据处理函数是本发明的基本思路。
图4是未引入本发明实施例前Windows系统处理EMF打印格式的打印作业时的流程图。分为以下步骤:
1.用户发起一个EMF格式打印作业
2.打印作业进入打印队列
3.GDI回放
4.输出至打印机
对于EMF格式打印作业,引入本发明实施例后打印作业被处理的方式和流程如图5和图6所示。
本发明的实施例包含注入(Hook)模块和打印数据处理模块:
此注入模块负责将此打印数据处理模块注入到Windows操作系统的PrintSpooler服务进程中,并将此Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor。
此打印数据处理模块负责接收、提取、增加和(或)修改打印数据,并可以将此打印数据继续传递给相应的打印处理器,让Windows继续处理此打印作业。
图5显示了处理EMF格式打印作业时本发明实施例所涉及基本单元的方框图。在利用注入模块将打印数据处理模块注入到打印处理器后,打印数据处理模块先于打印处理器获得EMF格式的打印数据。
图6显示了处理EMF格式打印作业时本发明实施例的流程图。其具体工作流程如下:
1.用户发起一个EMF格式打印作业
此步骤,用户以任意公知的方法发起一个EMF格式打印作业,如利用Notepad、word等应用程序打开一个文档,然后点击打印;
2.打印作业进入打印队列
3.打印数据处理模块截获打印数据
因打印数据处理模块已被注入(Hook),此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
4.打印数据的提取、增加或修改
此打印数据处理模块提取此打印数据,或对打印内容进行增加或修改。
提取打印数据的典型应用场景是打印内容审计,提取的打印数据原始格式是EMF,Windows系统支持EMF格式文件的直接浏览,可以利用公知的图形转换技术,转换成SVG、JPG等格式,并缩小其尺寸和分辨率,以便于Web浏览。
打印内容进行增加的典型应用场景是水印和条码嵌入,因为截获的打印数据是EMF格式,利用Windows的GDI API(类似GDI回放)可以方便的在EMF数据中增加内容,如嵌入水印或条码。
打印内容进行修改的典型应用场景是数字水印,将一些隐含信息隐藏在文本的字里行间中,需要对EMF数据进行修改,而不是简单的增加。
5.打印数据继续传递(GDI回放)
打印数据处理模块将修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,打印处理器将进行GDI回放动作,Windows后台打印系统将继续处理并完成此打印作业。
如果打印数据处理模块中包含一个打印数据自动审核子模块,可自动审核打印数据是否继续传递,如果此模块返回结果为否,则不会发生GDI回放动作,打印作业被中止。
6.输出至打印机
打印数据被以RAW格式发送至打印机。
对于由用户选择非EMF打印格式的打印作业,未引入本发明实施例前Windows系统处理该类型打印作业的方式和流程如图7和图8所示。
图7显示了未引入本发明实施例前Windows系统处理用户选择非EMF打印格式打印作业时的方框图。从图中可看出非EMF打印任务将不会有GDI回放的动作,因此简单的注入(Hook)打印处理器也无法获得需要的打印数据,需要在打印任务产生阶段就对打印作业的格式进行修改,使其变为EMF格式打印任务。
图8显示了未引入本发明实施例前Windows系统处理用户选择非EMF打印格式的打印作业时的流程图。分为以下步骤:
1.用户发起一个非EMF格式打印作业
此步骤,用户以任意公知的方法发起一个非EMF格式打印作业,如利用Word等应用程序打开一个doc文档,然后点击打印,并在打印对话框上点选项,在弹出的对话框上去掉“后台打印”的勾选,最后点击确定按钮。
2.打印作业进入打印队列
3.输出至打印机
整个打印过程与EMF格式打印作业相比,少了GDI回放的环节,打印数据直接以RAW格式发送给打印机进行打印输出。
对于用户选择非EMF打印格式的打印作业,引入本发明实施例后打印作业被处理的方式和流程如图9和图10所示。
本发明的实施例包含注入模块、打印格式修改模块和打印数据处理模块:
此注入模块负责将此打印格式修改模块注入到文件打印进程并将其打印格式选择函数修改为此打印格式修改模块的打印格式选择函数;此注入模块还负责将此打印数据处理模块注入到Windows操作系统的Print Spooler服务进程中并此Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
此打印格式修改模块负责将用户发起打印任务时选择的非EMF打印格式强制修改为EMF打印格式;
此打印数据处理模块负责接收、提取、增加和(或)修改打印数据,并可以将此打印数据继续传递给相应的打印处理器,让Windows继续处理此打印任务。
图9显示了处理用户选择非EMF打印格式的打印作业时本发明实施例所涉及基本单元的方框图。利用注入模块将打印格式修改模块注入到文件打印进程并将其打印格式选择函数修改为此打印格式修改模块的打印格式选择函数,可以将用户选择非EMF格式打印作业强制修改为EMF格式打印作业;在此基础上,利用注入模块将打印数据处理模块注入到打印处理器后,打印数据处理模块先于打印处理器获得EMF格式的打印数据,并进一步实现对打印数据的提取、增加和(或)修改。
图10显示了处理用户选择非EMF打印格式的打印作业时本发明实施例的流程图。其具体工作流程如下:
1.用户发起一个非EMF格式打印作业
2.打印格式修改模块修改打印作业为EMF格式
因打印格式修改模块已被注入(Hook),此打印格式修改模块的将在产生打印作业前,代替原打印格式选择函数工作,无论用户发起的格式是否为EMF格式,打印作业均将被设置为EMF格式。
3.打印作业进入打印队列
4.打印数据处理模块截获打印数据
因打印数据处理模块已被注入(Hook),此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
5.打印数据的提取、增加或修改
此打印数据处理模块提取此打印数据,或对打印内容进行增加或修改。
6.打印数据继续传递(GDI回放)
打印数据处理模块将修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,打印处理器将进行GDI回放动作,Windows后台打印系统将继续处理并完成此打印作业。
如果打印数据处理模块中包含一个打印数据自动审核子模块,可自动审核打印数据是否继续传递,如果此模块返回结果为否,则不会发生GDI回放动作,打印作业被中止。
7.输出至打印机
打印数据被以RAW格式发送至打印机。
对于打印机默认非EMF打印格式的打印作业,未引入本发明实施例前Windows系统处理该类型打印作业的方式和流程如图11和图12所示。
图11显示了未引入本发明实施例前Windows系统处理打印机默认非EMF打印格式的打印作业时的方框图。从图中可看出非EMF打印任务将不会有GDI回放的动作,因此简单的注入(Hook)打印处理器也无法获得需要的打印数据,需要在打印任务产生阶段就对打印作业的格式进行修改,使其变为EMF格式打印任务。
图12显示了未引入本发明实施例前Windows系统处理打印机默认非EMF打印格式的打印作业时的流程图。分为以下步骤:
1.用户发起一个打印作业
此步骤,用户以任意公知的方法发起一个打印作业,如利用Notepad等应用程序打开一个txt文档,在打印时选择一台默认格式为非EMF的打印机,然后点击打印。
2.非EMF格式打印作业进入打印队列
因为用户选择的是默认格式为非EMF的打印机,GDI在产生打印作业前调用打印机驱动程序的DrvEnablePDEV函数时,此函数返回的是非EMF格式。因此打印作业将以非EMF格式生成并进入打印队列。
3.输出至打印机
整个打印过程与EMF格式打印作业相比,少了GDI回放的环节,打印数据直接以RAW格式发送给打印机进行打印输出。
对于打印机默认非EMF打印格式的打印作业,引入本发明实施例后打印作业被处理的方式和流程如图13和图14所示。
本发明的实施例包含注入模块、打印格式修改模块和打印数据处理模块:
此注入模块负责将此打印格式修改模块注入到所有或用户所选打印机驱动程序,并将此打印机驱动程序的DrvEnablePDEV函数修改为此打印格式修改模块的DrvEnablePDEV函数;此注入模块还负责将此打印数据处理模块注入到Windows操作系统的Print Spooler服务进程中并将此Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
此打印格式修改模块负责将此打印机驱动程序默认使用非EMF格式改为默认使用EMF格式;
此打印数据处理模块负责接收、提取、增加和(或)修改打印数据,并可以将此打印数据继续传递给相应的打印处理器,让Windows继续处理此打印任务。
图13显示了处理打印机驱动程序默认使用非EMF格式的打印作业时本发明实施例所涉及基本单元的方框图。利用注入模块将打印格式修改模块注入到所有或用户所选打印机驱动程序并将此打印机驱动程序的DrvEnablePDEV函数修改为此打印格式修改模块的DrvEnablePDEV函数,可以将打印机驱动程序默认使用非EMF格式打印作业强制修改为EMF格式打印作业;在此基础上,利用注入模块将打印数据处理模块注入到打印处理器后,打印数据处理模块先于打印处理器获得EMF格式的打印数据,并进一步实现对打印数据的提取、增加和(或)修改。
图14显示了处理打印机驱动程序默认使用非EMF格式的打印作业时本发明实施例的流程图。其具体工作流程如下:
1.用户发起一个打印作业
此步骤,用户以任意公知的方法发起一个打印作业,如利用Notepad等应用程序打开一个txt文档,在打印时选择一台默认格式为非EMF的打印机,然后点击打印。
2.打印格式修改模块修改打印作业为EMF格式
因打印格式修改模块已被注入(Hook),GDI在产生打印作业前调用打印机驱动程序的DrvEnablePDEV函数时,此函数已被打印格式修改模块对应函数替换,而此函数始终返回的是EMF格式,因此打印作业将以EMF格式产生。
3.打印作业进入打印队列
4.打印数据处理模块截获打印数据
因打印数据处理模块已被注入(Hook),此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
5.打印数据的提取、增加或修改
此打印数据处理模块提取此打印数据,或对打印内容进行增加或修改。
6.打印数据继续传递(GDI回放)
打印数据处理模块将修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,打印处理器将进行GDI回放动作,Windows后台打印系统将继续处理并完成此打印作业。
如果打印数据处理模块中包含一个打印数据自动审核子模块,可自动审核打印数据是否继续传递,如果此模块返回结果为否,则不会发生GDI回放动作,打印作业被中止。
7.输出至打印机
打印数据被以RAW格式发送至打印机。
通过上文的说明,对于本发明的核心思想进行了阐述,结合到实际的产品中,可以实现打印过程监控、打印内容审计、打印内容过滤、预览和保存、条码和水印嵌入等功能。
另外,本发明还提出了一种利用多个打印作业打印文件的方法:此方法能够从公知的Windows操作系统的EMF打印作业中截获并增加和(或)修改打印数据,然后利用此打印数据替换或嵌入到另外一个打印作业的打印数据中。
本发明还提出一种利用两个Windows系统的多个打印作业打印文件的方法:此方法能够从一个公知的Windows操作系统的EMF打印作业中截获并增加和(或)修改打印数据,然后在另外一个公知的Windows操作系统中利用此打印数据替换或嵌入到另外一个打印作业的打印数据中。
引入此本发明的实施例后,处理打印作业的重打印、印前审核、异机打印是一个本发明实施例与公知的技术组合形成的方法。
其中处理打印作业的重打印时本发明实施例的流程如图15所示,具体流程说明如下:
1.用户发起一个打印作业
用户以任意公知的方法发起一个打印任务;
2.打印格式修改模块修改打印作业为EMF格式
按照上文所述方法引入打印格式修改模块,将所有打印作业统一为EMF格式。
3.打印作业进入打印队列
4.打印数据处理模块截获打印数据
按照上文所述方法引入打印数据处理模块,打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
5.打印数据的增加或修改
此步骤为可选步骤,即可以不做增加或修改,并且可在打印数据保存前也可以是保存后对打印数据进行增加或修改。
6.保存打印数据(PD1)
此打印数据处理模块或其他关联模块将打印数据保存至任意自己能再次访问的存储空间,为明确此数据,取名为PD1。
7.打印数据继续传递(GDI回放)
打印数据处理模块将修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,打印处理器将进行GDI回放动作,Windows后台打印系统将继续处理并完成此打印作业。
8.输出至打印机
打印数据被以RAW格式发送至打印机。如果打印机出现缺纸、缺墨等故障,会导致用户的打印作业失败。
9.用户或程序发起重打印命令
当出现打印作业失败时,或者用户需要重打印文档时,用户可以手工解决打印机故障后发起重打印命令,也可以由程序利用公知的方法检测打印作业是否成功,并在打印机恢复正常后自动发起重打印命令。
10.打印作业进入打印队列
同步骤3
11.打印数据处理模块截获打印数据
同步骤4
12.打印数据替换为PD1
此步骤中,打印数据处理模块或其关联模块利用公知的方法获取在步骤6保存的打印数据PD1,并将当前打印作业的打印数据替换为PD1。
13.打印数据的增加或修改
同步骤5,步骤5和步骤13可以同时存在,也可以存在其一,也可以都不存在。
14.打印数据继续传递(GDI回放)
同步骤7
15.输出至打印机
打印数据被以RAW格式发送至打印机。如果打印机故障得到解决,则打印作业可以被打印机成功输出。
其中处理打印作业的印前审核时本发明实施例的流程如图16所示,具体流程说明如下:
1.用户发起一个打印作业
用户以任意公知的方法发起一个打印任务;
2.打印格式修改模块修改打印作业为EMF格式
按照上文方法引入打印格式修改模块,将所有打印作业统一为EMF格式。
3.打印作业进入打印队列
4.打印数据处理模块截获打印数据
按照上文所述方法引入打印数据处理模块,打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
5.打印数据的增加或修改
此步骤为可选步骤,即可以不做增加或修改,并且可在打印数据保存前也可以是保存后对打印数据进行增加或修改。
6.保存打印数据(PD1)
此打印数据处理模块或其他关联模块将打印数据保存至任意自己能再次访问的存储空间,为明确此数据,取名为PD1。
在保存打印数据后,当前打印作业的打印数据不会被继续传递,当前打印作业被中止。
7.审核
此步骤可以是程序自动审核,也可以是人工审核。打印数据为EMF格式,为微软内置格式,因此可以公知的方法预览打印数据,供人工审核。
如果审核不通过,则流程结束。
8.用户或程序发起重打印命令
审核通过后,用户可以手工发起重打印命令,也可以由程序利用公知的方法检测打印作业审核通过或者获取审核通过的通知,然后自动发起重打印命令。
9.打印作业进入打印队列
同步骤3
10.打印数据处理模块截获打印数据
同步骤4
11.打印数据替换为PD1
此步骤中,打印数据处理模块或其关联模块利用公知的方法获取在步骤6保存的打印数据PD1,并将当前打印作业的打印数据替换为PD1。
12.打印数据的增加或修改
同步骤5,步骤5和步骤12可以同时存在,也可以存在其一,也可以都不存在。
13.打印数据继续传递(GDI回放)
打印数据处理模块将修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,打印处理器将进行GDI回放动作,Windows后台打印系统将继续处理并完成此打印作业。
14.输出至打印机
打印数据被以RAW格式发送至打印机。如果打印机工作正常,则打印作业可以被打印机成功输出。
其中处理打印作业的异机打印时本发明实施例的流程如图17所示,具体流程说明如下:
1.用户在操作系统A发起一个打印作业
用户以任意公知的方法在操作系统A发起一个打印任务;
2.打印格式修改模块修改打印作业为EMF格式
按照上文方法引入打印格式修改模块,将所有打印作业统一为EMF格式。
3.打印作业进入操作系统A打印队列
4.操作系统A打印数据处理模块截获打印数据
按照上文方法引入打印数据处理模块,操作系统A打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
5.打印数据的增加或修改
此步骤为可选步骤,即可以不做增加或修改,并且可在打印数据保存前也可以是保存后对打印数据进行增加或修改。
6.保存打印数据(PD1)
此打印数据处理模块或其他关联模块将打印数据保存至任意自己以及下文中操作系统B均能再次访问的存储空间,为明确此数据,取名为PD1。
在保存打印数据后,当前打印作业的打印数据不会被继续传递,当前打印作业被中止。
7.审核
此步骤为可选步骤。可以是程序自动审核,也可以是人工审核。打印数据为EMF格式,为微软内置格式,因此可以公知的方法预览打印数据,供人工审核。
审核的动作可以是发生在操作系统A中,也可以是任意可访问到PD1或其预览数据的操作系统中。
如果审核不通过,则流程结束。
8.用户或程序发起重打印命令
审核通过后,用户可以手工发起重打印命令,也可以由程序利用公知的方法检测打印作业审核通过或者获取审核通过的通知,然后自动发起重打印命令。
如果没有审核步骤,则程序检测到打印数据PD1可用后,自动发起重打印命令。
9.操作系统B发起一个打印作业
由程序在操作系统B(通常是服务器)发起一个打印作业。
10.打印作业进入操作系统B打印队列
同步骤3
11.操作系统B打印数据处理模块截获打印数据
同步骤4
12.打印数据替换为PD1
此步骤中,操作系统B打印数据处理模块或其关联模块利用公知的方法获取在步骤6保存的打印数据PD1,并将当前打印作业的打印数据替换为PD1。
13.打印数据的增加或修改
同步骤5,步骤5和步骤12可以同时存在,也可以存在其一,也可以都不存在。
14.打印数据继续传递(GDI回放)
操作系统B打印数据处理模块将修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,打印处理器将进行GDI回放动作,Windows后台打印系统将继续处理并完成此打印作业。
15.输出至打印机
打印数据被以RAW格式发送至打印机。如果打印机工作正常,则打印作业被打印机成功输出。
从上述内容,可以看出,本发明提出了一种在Windows操作系统打印过程中提取、增加和(或)修改打印数据的系统和方法。此系统和方法可以从以下打印作业中截获并提取打印数据和对打印数据进行修改:
1.所有EMF格式打印作业
2.用户选择非EMF打印格式的打印作业
3.打印机默认使用非EMF格式的打印作业
相比其它注入(Hook)技术获得Windows打印数据而言,处理打印内容时无需处理对打印机语言的翻译,因此本发明做到了最佳兼容性和完整性。
本发明可以通用的实现Windows操作系统的打印过程监控、打印审批、打印内容过滤、预览和保存、条码和水印嵌入、重新打印、异地还原打印等功能,并且通用的解决了打印作业高级属性设置和打印机特性属性设置丢失的问题。
本专业人员会理解,可以在不背离其精神或核心特征的前提下以各种特定形式实施本发明,比如可以结合其他一些公知技术,实现打印过程监控、打印审批、打印内容过滤、预览和保存、条码和水印嵌入、重新打印、异地还原打印等功能。比如将提取到的打印数据由EMF格式转换成PDF格式,利用PDF浏览组件来实现打印内容的预览;或者在打印过程中往EMF格式打印数据中实时的嵌入二维条码或者文字/图片水印,实现打印审计追溯等功能;或者将提取的打印数据保存成文件,如果打印遇到错误,可以从文件获取此打印数据,然后在本地或异地发起一个打印作业并将其打印数据替换为需重新打印的打印数据,从而实现重新打印或异地还原打印功能;或者利用一个打印内容解析引擎,实时的分析打印数据中的文本,甚至是图片中的文本信息,然后根据一定的策略阻止用户打印出包含敏感信息的内容,从而实现打印内容过滤的功能;又或者在用户打印文档时,截获打印数据并转换成jpg、pdf等可阅读的格式,由审批人进行审批来决定此文档是否允许打印,从而实现打印内容审批的功能。因此,本说明书中公开的实施例完全视为说明性的,而非限定性的,本发明范围由所附权利要求书限定,而非前述描述的内容,只包括属于此范围和及其等效物范围和含义之内的所有变更。

Claims (21)

1.一种在Windows操作系统打印过程中提取、增加和(或)修改打印数据的系统:此系统能够从公知Windows操作系统的所有EMF格式打印任务中截获并提取打印数据和对打印数据进行增加和(或)修改。此系统包含注入模块和打印数据处理模块:
此注入模块负责将此打印数据处理模块注入到Windows操作系统的PrintSpooler服务进程中,并将此Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor。
此打印数据处理模块负责接收、提取、增加和(或)修改打印数据,并可以将此打印数据继续传递给相应的打印处理器,让Windows继续处理此打印任务。
2.一种在Windows操作系统打印过程中提取打印数据的方法,此方法能够从公知Windows操作系统的所有EMF格式打印任务中截获并提取打印数据。此方法包含如下步骤:
将一个打印数据处理模块注入到Windows操作系统的Print Spooler服务进程并将此Prin Spooler中所有的打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
用户以任意公知的方法发起一个EMF格式打印任务;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
此打印数据处理模块提取此打印数据。
3.一种在Windows操作系统打印过程中增加和(或)修改打印数据的方法,此方法能够从公知Windows操作系统的所有EMF格式打印任务中截获并增加和(或)修改打印数据。此方法包含如下步骤:
注入打印数据处理模块步骤,将一个打印数据处理模块注入到Windows操作系统的Print Spooler服务进程并将此Print Spooler中所有的打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
用户以任意公知的方法发起一个EMF格式打印任务;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
此打印数据处理模块将此打印数据进行增加和(或)修改;
打印数据继续传递步骤,此打印数据处理模块将增加和(或)修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,Windows将继续处理此打印任务。
4.一种在Windows操作系统打印过程中提取、增加和(或)修改打印数据的系统:此系统能够从公知的Windows操作系统中的用户选择的非EMF打印格式的打印任务中截获、提取打印数据和对打印数据进行增加和(或)修改;此系统包含注入模块、打印格式修改模块和打印数据处理模块:
此注入模块负责将此打印格式修改模块注入到文件打印进程并将其打印格式选择函数修改为此打印格式修改模块的打印格式选择函数;此注入模块还负责将此打印数据处理模块注入到Windows操作系统的Print Spooler服务进程中并此Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印内容处理模块的处理函数PrintDocumentOnPrintProcessor;
此打印格式修改模块负责将用户发起打印任务时选择的非EMF打印格式强制修改为EMF打印格式;
此打印数据处理模块负责接收、提取、增加和(或)修改打印数据,并可以将此打印数据继续传递给相应的打印处理器,让Windows继续处理此打印任务。
5.根据权利要求4所述的系统,所述的非EMF打印格式是指所述的文件打印进程在调用Windows API:StartDoc时将打印格式参数设为非EMF格式。
6.一种在Windows操作系统打印过程中提取打印数据的方法,此方法能够从公知的Windows操作系统中的用户选择的非EMF打印格式的打印任务中截获和提取打印数据。此方法包含如下步骤:
将一个打印数据处理模块注入到Windows操作系统的Print Spooler服务进程并将上述Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
将一个打印格式修改模块注入到文件打印进程中并将其打印格式选择函数修改为打印格式修改模块的打印格式选择函数;
用户利用此文件打印进程发起一个打印任务,并且选择非EMF打印格式;
此打印格式修改模块将非EMF打印格式转成EMF打印格式;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
此打印数据处理模块提取此打印数据。
7.一种在Windows操作系统打印过程中增加和(或)修改打印数据的方法,此方法能够从公知的Windows操作系统中的用户选择的非EMF打印格式的打印任务中截获、增加和(或)修改打印数据。此方法包含如下步骤:
将一个打印数据处理模块注入到Windows操作系统的Print Spooler服务进程并将上述Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
将一个打印格式修改模块注入到文件打印进程中并将其打印格式选择函数修改为打印格式修改模块的打印格式选择函数;
用户利用此文件打印进程发起一个打印任务,并且选择非EMF打印格式;
此打印格式修改模块将非EMF打印格式转成EMF打印格式;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
此打印数据处理模块增加和(或)修改此打印数据;
此打印数据处理模块将增加和(或)修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,Windows将继续处理此打印任务。
8.根据权利要求4、6或7所述的系统和方法,其特征是,所述的文件打印进程,是指用户发起打印操作所使用的软件的进程,如Microsoft Word等。
9.一种在Windows操作系统打印过程中提取、增加和(或)修改打印数据的系统:此系统能够从公知的Windows操作系统的打印机默认使用非EMF格式的打印任务中截获、提取打印数据和对打印数据的增加和(或)修改,所述系统包含注入模块、打印格式修改模块和打印内容处理模块:
此注入模块负责将此打印格式修改模块注入到所有或用户所选打印机驱动程序,并将此打印机驱动程序的DrvEnablePDEV函数修改为此打印格式修改模块的DrvEnablePDEV函数;此注入模块还负责将此打印数据处理模块注入到Windows操作系统的Print Spooler服务进程中并此Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印内容处理模块的处理函数PrintDocumentOnPrintProcessor;
此打印格式修改模块负责将此打印机驱动程序默认使用非EMF格式改为默认使用EMF格式;
此打印数据处理模块负责接收、提取、增加和(或)修改打印数据,并可以将此打印数据继续传递给相应的打印处理器,让Windows继续处理此打印任务。
10.根据权利要求8所述的系统,所述的打印机默认使用非EMF格式是指其打印驱动程序的DrvEnablePDEV函数返回特性为非EMF格式。
11.一种在Windows操作系统打印过程中提取打印数据的方法:此方法能够从公知的Windows操作系统的打印机默认使用非EMF格式的打印任务中截获和提取打印数据。此方法包含如下步骤:
将一个打印数据处理模块注入到Windows操作系统的Print Spooler服务进程并将上述Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
将一个打印格式修改模块注入到所有或用户所选打印机驱动程序,并将此打印机驱动程序的DrvEnablePDEV函数修改为此打印格式修改模块的DrvEnablePDEV函数
用户以任意公知的方法发起一个打印任务;
用户所选打印机的打印驱动程序的DrvEnablePDEV函数返回特性中为非EMF格式,此打印格式修改模块将此打印驱动程序的DrvEnablePDEV函数返回特性中的非EMF格式改为EMF格式,实际打印数据将为EMF格式;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
此打印数据处理模块提取此打印数据。
12.一种在Windows操作系统打印过程中修改打印数据的方法:此方法能够从公知的Windows操作系统的打印机默认使用非EMF格式的打印任务中截获、增加和(或)修改打印数据。此方法包含如下步骤:
将一个打印数据处理模块注入到Windows操作系统的Print Spooler服务进程并将上述Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
将一个打印格式修改模块注入到所有或用户所选打印机驱动程序,并将此打印机驱动程序的DrvEnablePDEV函数修改为此打印格式修改模块的DrvEnablePDEV函数
用户以任意公知的方法发起一个打印任务;
用户所选打印机的打印驱动程序的DrvEnablePDEV函数返回特性中为非EMF格式,此打印格式修改模块将此打印驱动程序的DrvEnablePDEV函数返回特性中的非EMF格式改为EMF格式,实际打印数据将为EMF格式;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
此打印数据处理模块增加和(或)修改此打印数据。
此打印数据处理模块将增加和(或)修改后的打印数据传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,Windows将继续处理此打印任务。
13.一种利用多个打印任务打印文件的方法:此方法能够从公知的Windows操作系统的EMF打印任务中截获并提取、增加和(或)修改打印数据,然后利用此打印数据替换或嵌入到另外一个打印任务的打印数据中。此方法包含如下步骤:
将一个打印数据处理模块注入到Windows操作系统的Print Spooler服务进程并将上述Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
用户以任意公知的方法发起一个EMF格式打印任务;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
此打印数据处理模块提取、增加和(或)修改此打印数据,并将其以保存至任意自己能再次访问的存储空间。
以任意公知的方法发起另外一个EMF格式打印任务;
此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到此另外一个打印任务的打印数据;
打印数据处理模块从此存储空间重新获取此被保存的打印数据,并用此打印数据替换或嵌入到此另外一个打印任务的打印数据中。
14.根据权利要求13所述的方法,可以将用户发起的多个打印任务的打印数据进行提取或修改后嵌入到另一个打印任务中,也可以连续多次将当前打印任务的打印数据进行提取或修改后嵌入到下一个打印任务中。
15.一种利用两个Windows系统的多个打印任务打印文件的方法:此方法能够从一个公知的Windows操作系统的EMF打印任务中截获并提取、增加和(或)修改打印数据,然后在另外一个公知的Windows操作系统中利用此打印数据替换或嵌入到另外一个打印任务的打印数据中。此方法包含如下步骤:
将一个打印数据处理模块注入到Windows操作系统A和B的Print Spooler服务进程并将上述Print Spooler中所有打印处理器的引出函数PrintDocumentOnPrintProcessor替换为此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor;
用户以任意公知的方法在Windows操作系统A发起一个EMF格式打印任务;
Windows操作系统A的此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到用户打印的数据;
Windows操作系统A的此打印数据处理模块提取、增加和(或)修改此打印数据,并将其以保存至任意自己和Windows操作系统B的此打印数据处理模块都能再次访问的存储空间或者发送给Windows操作系统B的此打印数据处理模块,由Windows操作系统B的此打印数据处理模块保存在自己能再次访问的存储空间。
以任意公知的方法在Windows操作系统B发起另一个EMF格式打印任务;
Windows操作系统B此打印数据处理模块的处理函数PrintDocumentOnPrintProcessor接收到此另一个打印任务的打印数据;
Windows操作系统B此打印数据处理模块从所述的存储空间获取此被保存打印数据,并用此打印数据替换或嵌入到此另一个打印任务的打印数据中。
16.根据权利要求15所述的方法,可以将Windows操作系统A用户发起的多个打印任务的打印数据进行提取、增加和(或)修改后嵌入到Windows操作系统B的另一个打印任务中,也可以连续多次将当前打印任务的打印数据进行提取、增加和(或)修改后嵌入到下一个打印任务中,最终再嵌入到Windows操作系统B的另一个打印任务中。
17.根据权利要求15所述的方法,注入到Windows操作系统A和B的可以是同一个打印数据处理模块,也可以是不同打印数据处理模块。
18.根据权利要求1、2、3、4、6、7、9、11、12、13或15所述的系统和方法,其特征是,打印数据处理模块接收的打印数据包含两种类型的数据,一种是打印内容,一种是打印属性,打印内容是指将会实际输出的打印纸张上的内容,打印属性是指控制打印内容的特性,所述打印属性包含但不限于要打印的纸张类型、打印份数、是否彩色打印、打印质量、是否双面打印、打印方向、缩放比例等。
19.根据权利要求1、2、3、4、6、7、9、11、12、13或15所述的系统和方法,所述的所有的打印处理器是指所有注册到Print Spooler服务中的打印处理器,可以是调用Windows API(如AddPrintProcessor)或通过修改注册表的方式安装的打印处理器。
20.根据权利要求1、3、4、7、9、12、13或15所述的系统和方法,所述的打印数据处理模块修改所述的打印数据的方法可以是固定的或非固定的或其它模块来完成的,所述的固定的是指由打印数据处理模块独立完成所述的打印数据修改动作,所述的非固定的是指可配置的策略来控制完成,所述的其它模块来完成是指由运行于同一或其它Windows操作系统上的其他模块来完成。
21.根据权利要求2、6、11、13或15所述的方法,所述的打印数据提取步骤后,可以包含一个同意或拒绝打印步骤,所述同意,是指将所述的打印数据继续传递到对应的真实的打印处理器的引出函数PrintDocumentOnPrintProcessor,所述拒绝是指不再做进一步的传递动作,其结果是用户将无法打印出数据。
CN2011102689138A 2011-09-13 2011-09-13 在Windows打印过程中监控打印数据的系统和方法 Pending CN102999299A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011102689138A CN102999299A (zh) 2011-09-13 2011-09-13 在Windows打印过程中监控打印数据的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011102689138A CN102999299A (zh) 2011-09-13 2011-09-13 在Windows打印过程中监控打印数据的系统和方法

Publications (1)

Publication Number Publication Date
CN102999299A true CN102999299A (zh) 2013-03-27

Family

ID=47927919

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011102689138A Pending CN102999299A (zh) 2011-09-13 2011-09-13 在Windows打印过程中监控打印数据的系统和方法

Country Status (1)

Country Link
CN (1) CN102999299A (zh)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103500296A (zh) * 2013-09-29 2014-01-08 北京溯源鸿业科技有限公司 一种文本文档中数字水印的嵌入方法和装置
CN105095749A (zh) * 2014-05-22 2015-11-25 北京奇虎科技有限公司 状态栏通知的接管方法及装置
CN106803041A (zh) * 2015-11-25 2017-06-06 周利平 基于虚拟打印机技术的数据安全打印控制方法
CN107239240A (zh) * 2016-03-28 2017-10-10 北大方正集团有限公司 打印控制方法、打印控制系统和终端
CN107992273A (zh) * 2017-11-15 2018-05-04 江苏神州信源系统工程有限公司 一种基于cups的打印管控方法和系统
CN108563434A (zh) * 2018-04-04 2018-09-21 重庆玺兴科技有限公司 一种打印驱动开发方法
JP2018154094A (ja) * 2017-03-21 2018-10-04 セイコーエプソン株式会社 制御装置、及び、プログラム
WO2018196262A1 (zh) * 2017-04-25 2018-11-01 百富计算机技术(深圳)有限公司 将pos终端虚拟为计算机打印机的方法、计算机、pos终端和存储介质
CN108885603A (zh) * 2016-03-14 2018-11-23 赛门铁克公司 通过打印操作的打印接口技术不可知数据丢失防护
CN110532210A (zh) * 2019-08-07 2019-12-03 北京数衍科技有限公司 安全获取操作系统任意输出设备数据的桥接方法
CN113396385A (zh) * 2019-02-01 2021-09-14 兄弟工业株式会社 支持程序、信息处理装置、以及印刷方法
CN113641312A (zh) * 2021-08-11 2021-11-12 北京天空卫士网络安全技术有限公司 一种文件打印方法和装置
CN113703697A (zh) * 2021-09-18 2021-11-26 北京鼎普科技股份有限公司 一种基于装订器的打印审计方法及系统
CN117785081A (zh) * 2023-12-27 2024-03-29 普世(南京)智能科技有限公司 一种集中文印的用户自助交互终端以及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1264862A (zh) * 1999-02-24 2000-08-30 日本电气株式会社 用于重新打印的网络打印系统
CN101377732A (zh) * 2008-09-18 2009-03-04 北大方正集团有限公司 一种安全文档的处理装置、系统和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1264862A (zh) * 1999-02-24 2000-08-30 日本电气株式会社 用于重新打印的网络打印系统
CN101377732A (zh) * 2008-09-18 2009-03-04 北大方正集团有限公司 一种安全文档的处理装置、系统和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
余扬武: "基于关键词匹配的打印数据获取系统", 《计算机工程》, vol. 34, no. 11, 30 June 2008 (2008-06-30) *
吴晓光: "网络打印监控系统的探讨", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 9, 15 September 2006 (2006-09-15), pages 167 - 168 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103500296B (zh) * 2013-09-29 2017-01-18 北京溯源鸿业科技有限公司 一种文本文档中数字水印的嵌入方法和装置
CN103500296A (zh) * 2013-09-29 2014-01-08 北京溯源鸿业科技有限公司 一种文本文档中数字水印的嵌入方法和装置
CN105095749A (zh) * 2014-05-22 2015-11-25 北京奇虎科技有限公司 状态栏通知的接管方法及装置
CN106803041A (zh) * 2015-11-25 2017-06-06 周利平 基于虚拟打印机技术的数据安全打印控制方法
CN108885603A (zh) * 2016-03-14 2018-11-23 赛门铁克公司 通过打印操作的打印接口技术不可知数据丢失防护
CN108885603B (zh) * 2016-03-14 2019-12-17 赛门铁克公司 通过打印操作的打印接口技术不可知数据丢失防护
CN107239240A (zh) * 2016-03-28 2017-10-10 北大方正集团有限公司 打印控制方法、打印控制系统和终端
JP2018154094A (ja) * 2017-03-21 2018-10-04 セイコーエプソン株式会社 制御装置、及び、プログラム
CN108621613A (zh) * 2017-03-21 2018-10-09 精工爱普生株式会社 控制装置以及程序
CN108621613B (zh) * 2017-03-21 2020-05-05 精工爱普生株式会社 控制装置以及计算机可读存储介质
WO2018196262A1 (zh) * 2017-04-25 2018-11-01 百富计算机技术(深圳)有限公司 将pos终端虚拟为计算机打印机的方法、计算机、pos终端和存储介质
CN107992273A (zh) * 2017-11-15 2018-05-04 江苏神州信源系统工程有限公司 一种基于cups的打印管控方法和系统
CN107992273B (zh) * 2017-11-15 2020-11-13 北信源系统集成有限公司 一种基于cups的打印管控方法和系统
CN108563434A (zh) * 2018-04-04 2018-09-21 重庆玺兴科技有限公司 一种打印驱动开发方法
CN113396385A (zh) * 2019-02-01 2021-09-14 兄弟工业株式会社 支持程序、信息处理装置、以及印刷方法
CN110532210A (zh) * 2019-08-07 2019-12-03 北京数衍科技有限公司 安全获取操作系统任意输出设备数据的桥接方法
CN113641312A (zh) * 2021-08-11 2021-11-12 北京天空卫士网络安全技术有限公司 一种文件打印方法和装置
CN113703697A (zh) * 2021-09-18 2021-11-26 北京鼎普科技股份有限公司 一种基于装订器的打印审计方法及系统
CN117785081A (zh) * 2023-12-27 2024-03-29 普世(南京)智能科技有限公司 一种集中文印的用户自助交互终端以及方法

Similar Documents

Publication Publication Date Title
CN102999299A (zh) 在Windows打印过程中监控打印数据的系统和方法
CN103116479B (zh) 打印系统及控制方法
CN102446077B (zh) 打印系统以及打印方法
JP5147429B2 (ja) 画像処理装置、画像処理方法及びそのプログラム
CN102446076B (zh) 打印系统、打印方法、打印服务器及控制方法
US8259322B2 (en) Printing system, printing program, information collection method, information search method and information search system
US20090303532A1 (en) Network device and workflow processing system
JP2006330939A (ja) 画像処理装置及び方法
JP5103339B2 (ja) 動的なプリンタ・ドライバ・ユーザー・インターフェース生成
JP5797052B2 (ja) 印刷システム、サーバー装置、情報処理方法及びプログラム
JP4817994B2 (ja) データ管理システム
JP5656455B2 (ja) 印刷システム、データ作成装置、保存装置、およびそれらの制御方法
US8144351B2 (en) Print system, information processing apparatus, and information processing method, including log information
US7715048B2 (en) Print controlling apparatus performing variable printing including watermark image, and method therefor
JP5893294B2 (ja) 画像処理装置及びその制御方法、並びにプログラム
EP3336683A1 (en) Image processing apparatus and method to form image on sheet using page image data and object information
CN102999303B (zh) 信息处理装置以及控制信息处理装置的方法
US8848232B2 (en) Method and system of performing prepress operations using a shell document
US7461301B2 (en) Approach for resolving printer driver incompatibility problems
CN102111520B (zh) 图像形成设备及其控制方法
US20050225797A1 (en) Printing apparatus and its control method, and program
CN108345435A (zh) 图像形成系统和图像形成方法
JP2010021702A (ja) 情報処理装置
CN101498995B (zh) 撷取打印内容之系统及其方法
JP2005018765A (ja) コンピュータシステムにおける画像形成ジョブを監視するシステム及び方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
DD01 Delivery of document by public notice

Addressee: Beijing Softlumos Technology Co., Ltd.

Document name: Notification that Application Deemed to be Withdrawn

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20130327