CN101593087A - 基于wince系统的打印预览方法 - Google Patents
基于wince系统的打印预览方法 Download PDFInfo
- Publication number
- CN101593087A CN101593087A CNA2008101098374A CN200810109837A CN101593087A CN 101593087 A CN101593087 A CN 101593087A CN A2008101098374 A CNA2008101098374 A CN A2008101098374A CN 200810109837 A CN200810109837 A CN 200810109837A CN 101593087 A CN101593087 A CN 101593087A
- Authority
- CN
- China
- Prior art keywords
- print preview
- preview
- forms
- service routine
- 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
Links
Images
Landscapes
- Record Information Processing For Printing (AREA)
Abstract
本发明公开了一种基于WINCE系统的打印预览方法,包含如下步骤:启动系统及打印预览服务程序;启动打印预览操作,应用程序向打印预览服务程序注册自己的窗体句柄和用于相应打印预览服务程序可传消息的指令代码,并保存为图像文件;应用程序可以调用打印预览驱动程序进行正常的打印操作;打印驱动的初始化,并通知打印预览服务程序根据系统消息中附带的参数,加载相应的图像文件并解析处理后转发给真正用于显示图像的打印预览窗体,打印预览窗体再加载之前保存的图像文件并显示;将预览数据打印输出。本发明实现用户在打印之前可以直观的看到并调整将要打印出来的内容,从而避免直接打印造成纸资源的浪费。
Description
【技术领域】
本发明涉及一种打印预览方法,特别涉及一种基于WINCE的打印预览方法。
【背景技术】
打印预览作为普通PC程序上的通用程序控件,在绝大多数PC程序上被广泛应用,如:微软的IE,Office系列软件上都带有打印预览控件,使用户在打印文档前可对要打印的文件进行预览,以确定打印文档的页边距及排版格式是否符合要求。
然而,在WinCE操作系统上,程序并没有自带打印预览控件,且微软也没有提供一套标准的打印预览控件,因此用户在进行打印操作之前不能对需要打印的文档的效果进行预览,特别是对页边距的设置没有直观的认识,经常出现打印出的内容由于页边距设置不当导致打印过程中图像被过度裁减,或图像显示不确切。给用户的使用带来极大的不便,并在一定程序上造成纸资源的浪费。
【发明内容】
本发明要解决的技术问题是在WinCE系统上提供一种打印预览方法,通过一套标准的,并可方便使用的打印预览控件,使用户在各种程序中可以发便调用,并通过简易的设置达到所见即所得的效果。
本发明是这样实现的:一种基于WINCE的打印预览方法,其特征在于,包含如下步骤:
(1)启动系统及打印预览服务程序;
(2)启动打印预览操作,应用程序向打印预览服务程序注册自己的窗体句柄和用于相应打印预览服务程序可传消息的指令代码,并保存为图像文件;
(3)应用程序可以调用打印预览驱动程序进行正常的打印操作;
(4)打印驱动的初始化,并通知打印预览服务程序根据系统消息中附带的参数,加载相应的图像文件并解析处理后转发给真正用于显示图像的打印预览窗体,打印预览窗体再加载之前保存的图像文件并显示;
(6)将预览数据打印输出。
上述的技术方案中步骤(4)和(6)之间还可包括下列步骤:
(5)重新设置页边距,应用程序将其与当前显示的页边距的比较,若有变化,打印预览程序将使用之前保存的应用程序的窗体句柄以及相关指令通知应用程序重新执行一次打印预览程序,并执行步骤(3)和(4)。
其中,执行步骤(3)的过程中,应用程序会重新注册窗体句柄,此时注册的窗体在打印预览服务程序中已经有记录,因此在进入步骤(4)时,打印预览服务程序将不会创建新的打印预览窗体,而是将数据送到之前创建的窗体中。
所述步骤(3)中,应用程序调用打印预览驱动程序是通过系统的图形设备接口进行;
所述步骤(4)中,打印预览服务程序接到通知有数据需要预览,并创建一个窗口用于显示要预览的内容,并保存此时系统设置中的打印相关的页边距以及真实选择的打印机驱动名称,最后再将窗体的句柄返回给打印预览驱动;
打印预览驱动将以窗体句柄作为是否进行图像数据传送的依据,如果句柄指不是指向一个实际存在的窗体,那么打印预览驱动将退出打印预览操作;
Wince系统将通过DrvCopyBits函数将图像数据输入到打印预览驱动中,打印预览驱动将图像数据转换为真实的打印机将输出的黑白图像,并将之前传递过来的窗体句柄作为其中的参数会传给打印预览服务程序;
打印预览服务程序在接到数据通知后,将相应得数据转发给真正用于显示图像的打印预览窗体,打印预览窗体再加载之前保存的图像文件并显示。
所述步骤(6)是:启动打印命令,打印预览程序将使用已保存的打印机驱动及相关的端口信息将数据送到打印预览自带的打印队列线程,再由打印队列线程处理相关的打印操作,并顺序输出打印图像。
其中,所述打印预览服务程序包括系统消息处理模块:用于接收打印预览驱动通过系统消息转发的各种消息;
预览窗体记录模块:负责记录打印预览窗体,并以上层应用程序注册的窗体句柄作为打印预览窗体的唯一标识;
预览图像显示模块:用于显示需要预览的图像的模块,并支持页边距设置,图像直接打印等操作;
打印队列模块:是一个单独运行的程序线程的模块,线程在运行过程中始终循环监视自己的打印队列,当打印队列中有数据存在时,打印队列模块就将调用正常的打印驱动将其输出,如果没有数据,打印队列线程将进入等待模式,每隔一秒扫描一次打印队列,将系统的资源占用降到最小。
本发明具有如下有益效果:本发明是通过虚拟驱动技术,使用虚拟的打印机驱动将上层应用程序送往打印机的数据进行拦截,并显示出来,使用户在打印之前可以直观的看到将要打印出来的内容;用户还可通过页边距动态设置功能在打印预览程序中快速的对页边距进行设置,无须对原程序进行设置,所有操作都可在打印预览程序中实现;并及时做出调整,避免纸资源的浪费。
【附图说明】
下面参照附图结合实施例对本发明作进一步的说明。
图1是本发明基于WINCE的打印预览方法流程示意图。
【具体实施方式】
请结合图1所示,本发明基于WINCE的打印预览方法的流程包括以下步骤:
(1)启动系统,同时启动打印预览服务程序作为后台服务程序;
该打印预览服务程序是事先预设的一个虚拟的打印机驱动,其本质就是一个普通的WinCE程序。与其他正常程序不同的是,当程序开始运行时,他不带程序界面,而是在后台运行。用户感觉不到程序的运行。打印预览服务程序包括以下几个模块:
系统消息处理模块:是程序的主消息循环函数(每个WinCE程序都可以向系统注册消息处理函数,用于接收系统消息),主要用于接收打印预览驱动通过系统消息转发的各种消息,包括:应用程序注册窗体句柄消息、打印预览开始消息、加载图像消息、打印预览结束消息。一个完整的打印预览步骤,打印预览服务器将会依次收到的消息顺序为:一个注册窗体句柄消息、一个打预览开始消息、若干个加载图像消息、一个打印预览结束消息。
预览窗体记录模块:主要负责记录打印预览窗体,并以上层应用程序注册的窗体句柄作为打印预览窗体的唯一标识。
打印预览显示模块:用于显示需要预览的图像的模块,并支持页边距设置,图像直接打印等操作。
打印队列模块:打印队列模块在打印预览服务程序中是作为一个单独的程序线程在运行的模块,在打印预览服务程序开始运行时该线程同时开始运行。线程在运行过程中始终循环监视自己的打印队列,当打印队列中有数据存在时,打印队列模块就将调用正常的打印驱动将其输出。如果没有数据,打印队列线程将进入等待模式,每隔一秒扫描一次打印队列,将系统的资源占用降到最小。
以上三个模块中只有预览图像显示模块在显示图像时是可见的,并可接收用户操作的模块,其他两个模块均是用户不可操作模块。
由于图形设备接口(GDI,Graphics Device Interface)是WinCE的子系统,负责在打印机上显示图形。WinCE的上层应用程序在调用打印机输出图像时,首先要创建打印机相关的设备上下文(DC,Device Context),应用程序通过调用WinCE的系统API函数CreateDC创建一个指向相关打印机的句柄,应用程序可以像在屏幕上绘图一样使用该打印机设备句柄。所以应用程序实际上并不理会我现在用的是什么设备。
基于以上原因,我们可创建一个虚拟的打印机驱动,该打印机驱动与所有WinCE打印机驱动拥有相同的系统接口,因此它可以接收来自上层应用程序发送到打印机驱动的所有图形数据。但是,与其他驱动程序不同的是,虚拟打印驱动并不将处理后的最终数据送到相应的打印机设备,而是将相关的数据保存为设置好的图形文件。并通过WinCE系统消息通知正在运行的打印预览服务程序。打印预览服务程序在接收到消息后,根据消息中所带的参数,加载相应的图像文件,将其解析为WinCE显示的BMP格式图形数据,并通过图像缩放函数处理后,以合适的比例显示在屏幕上,从而实现打印图像的显示。
(2)启动打印预览操作,应用程序向打印预览服务程序注册自己的窗体句柄和用于相应打印预览服务程序可传消息的指令代码,并保存为图像文件:应用程序在通过菜单操作或点击打印预览按钮操作后(该打印预览按钮是应用程序在编写代码时在界面中添加相应的按钮,并在按钮事件处理函数种,根据规定的调用顺序调用打印预览驱动给出的API函数,该部分只需在代码中做少量的修改就可实现),首先调用打印预览控件提供的接口函数向打印预览服务器注册自己的窗口句柄和程序中设置的用于相应打印预览服务器会传消息的指令代码。应用程序在收到应用程序注册的窗体句柄和指令代码后,将其保存起来,并作为下一次打印预览操作进入时,调用打印预览操作的窗体的相应信息。
在使用打印预览之前,应用程序通过调用虚拟驱动提供的函数向打印预览程序注册使用窗体,在注册窗体时,上层应用程序向接口传递应用程序的窗体句柄,以及修改页边距设置后用于接收打印预览回传消息的处理指令。打印预览程序接收应用程序注册后,保存应用程序的窗体句柄,以及回传消息。由于在WinCE系统下,其在处理打印驱动时进行进程保护,因此同一时间里不会有两个程序同时调用同一个打印驱动,因此,可以保证当前记录的窗体信息是与调用打印驱动预览的程序的窗体信息是一致的。
(3)应用程序可以调用打印预览驱动程序进行正常的打印操作:在正确注册窗体信息后,应用程序可以调用打印预览驱动程序进行正常的打印操作。Windows打印操作是通过系统得GDI接口进行的,此时只需要提供相应的打印机驱动的程序名,系统并不理会该驱动是否真的指向一台真实的打印机。只要我们提供的打印驱动的接口满足系统图形设备驱动接口的标准(注释三)系统就会认为此驱动是正常的设备驱动。
(4)打印驱动的初始化,并通知打印预览服务程序根据系统消息中附带的参数,加载相应的图像文件并解析处理后转发给真正用于显示图像的打印预览窗体,打印预览窗体再加载之前保存的图像文件并显示:
应用程序在调用GDI接口后,如果要进行打印需要进行一些列标准的操作步骤以进行打印驱动的初始化操作,包括以下几个标准接口:CreateDC;StartDoc;StartPage......相关打印画图操作;EndPage它们在驱动程序中都有相应得接口函数:DrvEnableDriver;DrvStartDoc DrvStartPage;DrvCopyBits;DrvEndDoc;
应用程序在执行StartDoc时,驱动程序将进入DrvStartDoc函数,该函数将通知打印预览服务程序有数据需要预览,打印预览服务程序此时将创建一个窗口用于显示要预览的内容,并保存此时系统设置中的打印相关的页边距以及真实选择的打印机驱动名称,最后再将窗体的句柄返回给打印预览驱动。驱动将以窗体的句柄作为是否进行图像数据传送的依据,如果句柄指不是指向一个实际存在的窗体,那么打印预览驱动将退出打印预览操作;
之后应用程序在执行EndPage是,WinCE系统将通过DrvCopyBits函数将图像数据输入到打印预览驱动中,打印预览驱动此时使用与真实打印驱动一样的图像处理方法将24位色的图像转换为真实的打印机将输出的2位色的黑白图像,并以页为单位通知打印预览服务器有图像到,并将之前传递过来的窗体句柄作为其中的参数会传给打印预览服务器。打印预览服务器在接到数据通知后,将相应得数据转发给真正用于显示图像的打印预览窗体,打印预览窗体再加载之前保存的图像,并显示;
最后,当应用程序结束打印操作时,应用程序将调用DeleteDC时,驱动程序将执行DrvEndDoc函数,该函数将通知打印预览服务程序打印操作已经结束,所有数据全部输送完成。此时打印预览窗体将开放打印按钮与页面设置按钮供客户使用。
如果客户在打印预览窗体上看到的图像的页边距设置不满意,此时可通过页边距设置按钮重新进行页边距设置,则可执行以下步骤:
(5)重新设置页边距,应用程序将其与当前显示的页边距的比较,若有变化,打印预览程序将使用之前保存的应用程序的窗体句柄以及相关指令通知应用程序重新执行一次打印预览程序(该过程自动完成),并执行步骤(3)和(4)。其中,执行步骤(3)的过程中,应用程序会重新注册窗体句柄,此时注册的窗体在打印预览服务程序中已经有记录,因此在进入步骤(4)时,打印预览服务程序将不会创建新的打印预览窗体,而是将数据送到之前创建的窗体中。
打印服务程序在显示图像时可以动态调整打印图像的页边距设置。打印预览程序可在注册表用获取默认的系统打印页边距设置。用户可通过打印预览程序提供的接口修改该项设置。在发现页边距被修改后,打印预览服务程序通过WinCE系统消息向事先注册的WinCE窗体发送注册的消息指令。并释放正在显示的图像。应用程序在接收到打印预览的相应指令后,重新注册打印预览,并执行相应的打印操作。当打印预览程序再次接收打印注册时,先搜索原先储存的相应得对应关系,查找该应用程序是否已经注册过,如果已经注册过,说明应用程序是在修改页边距设置后再次调用打印预览命令,因此原来创建的显示窗体还在,于是将相应得图像数据在原来的窗体显示出来,这样就实现了打印预览的页边距动态设置功能。
(6)将预览数据打印输出:打印预览程序提供预览图像打印输出功能,如果用户满意当前的页面设置,可通过打印预览程序上的打印命令输出正在预览的图像。此时打印预览程序将使用已保存的打印机驱动及相关的端口信息将数据送到打印预览自带的打印队列线程,再由打印队列线程处理相关的打印操作。打印队列是一个一直在循环运行的后台线程,它将由打印预览窗体送来的打印数据保存在打印队列中,并顺序输出得打印驱动输出图像,这样可以保证如果不同打印预览窗体同时调用打印命令是导致的打印数据混乱的问题。
至此,基于WINCE系统的整个打印预览、动态调整打印图像的页边距设置、预览数据打印输出的具体操作全部完成。
Claims (7)
1、一种基于WINCE系统的打印预览方法,其特征在于,包含如下步骤:
(1)启动系统及打印预览服务程序;
(2)启动打印预览操作,应用程序向打印预览服务程序注册自己的窗体句柄和用于相应打印预览服务程序可传消息的指令代码,并保存为图像文件;
(3)应用程序可以调用打印预览驱动程序进行正常的打印操作;
(4)打印驱动的初始化,并通知打印预览服务程序根据系统消息中附带的参数,加载相应的图像文件并解析处理后转发给真正用于显示图像的打印预览窗体,打印预览窗体再加载之前保存的图像文件并显示;
(6)将预览数据打印输出。
2、如权利要求1所述的基于WINCE系统的打印预览方法,其特征在于,步骤(4)和(6)之间还包括下列步骤:
(5)重新设置页边距,应用程序将其与当前显示的页边距的比较,若有变化,打印预览程序将使用之前保存的应用程序的窗体句柄以及相关指令通知应用程序重新执行一次打印预览程序,并执行步骤(3)和(4)。
3、如权利要求2所述的基于WINCE系统的打印预览方法,其特征在于:执行步骤(3)的过程中,应用程序会重新注册窗体句柄,此时注册的窗体在打印预览服务程序中已经有记录,因此在进入步骤(4)时,打印预览服务程序将不会创建新的打印预览窗体,而是将数据送到之前创建的窗体中。
4、如权利要求1所述的基于WINCE系统的打印预览方法,其特征在于:步骤(3)中,应用程序调用打印预览驱动程序是通过系统的图形设备接口进行。
5、如权利要求1所述的基于WINCE系统的打印预览方法,其特征在于:步骤(4)中,打印预览服务程序接到通知有数据需要预览,并创建一个窗口用于显示要预览的内容,并保存此时系统设置中的打印相关的页边距以及真实选择的打印机驱动名称,最后再将窗体的句柄返回给打印预览驱动;
打印预览驱动将以窗体句柄作为是否进行图像数据传送的依据,如果句柄指不是指向一个实际存在的窗体,那么打印预览驱动将退出打印预览操作;
Wince系统将通过DrvCopyBits函数将图像数据输入到打印预览驱动中,打印预览驱动将图像数据转换为真实的打印机将输出的黑白图像,并将之前传递过来的窗体句柄作为其中的参数会传给打印预览服务程序;
打印预览服务程序在接到数据通知后,将相应的数据转发给真正用于显示图像的打印预览窗体,打印预览窗体在加载之前保存的图像文件并显示。
6、如权利要求1所述的基于WINCE系统的打印预览方法,其特征在于:步骤(6)是,启动打印命令,打印预览程序将使用已保存的打印机驱动及相关的端口信息将数据送到打印预览自带的打印队列线程,再由打印队列线程处理相关的打印操作,并顺序输出打印图像。
7、如权利要求1或2所述的基于WINCE系统的打印预览方法,其特征在于,所述打印预览服务程序包括:
系统消息处理模块:用于接收打印预览驱动通过系统消息转发的各种消息;
预览窗体记录模块:负责记录打印预览窗体,并以上层应用程序注册的窗体句柄作为打印预览窗体的唯一标识;
预览图像显示模块:用于显示需要预览的图像的模块,并支持页边距设置,图像直接打印等操作;
打印队列模块:是一个单独运行的程序线程的模块,线程在运行过程中始终循环监视自己的打印队列,当打印队列中有数据存在时,打印队列模块就将调用正常的打印驱动将其输出,如果没有数据,打印队列线程将进入等待模式,每隔一秒扫描一次打印队列,将系统的资源占用降到最小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101098374A CN101593087A (zh) | 2008-05-29 | 2008-05-29 | 基于wince系统的打印预览方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008101098374A CN101593087A (zh) | 2008-05-29 | 2008-05-29 | 基于wince系统的打印预览方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101593087A true CN101593087A (zh) | 2009-12-02 |
Family
ID=41407760
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008101098374A Pending CN101593087A (zh) | 2008-05-29 | 2008-05-29 | 基于wince系统的打印预览方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101593087A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034460A (zh) * | 2011-09-30 | 2013-04-10 | 北大方正集团有限公司 | 打印机驱动程序测试方法和装置 |
CN103309627A (zh) * | 2012-03-07 | 2013-09-18 | 南京国图信息产业股份有限公司 | 基于打印驱动的文件双层转换方法 |
CN104050227A (zh) * | 2013-03-15 | 2014-09-17 | 柯尼卡美能达美国研究所有限公司 | 便携式文档格式文件预览操作 |
CN112368148A (zh) * | 2018-05-15 | 2021-02-12 | 录象射流技术公司 | 用于操作工业印刷机的系统和方法 |
CN113705152A (zh) * | 2020-05-20 | 2021-11-26 | 永中软件股份有限公司 | 一种实现文件即时预览的方法 |
-
2008
- 2008-05-29 CN CNA2008101098374A patent/CN101593087A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034460A (zh) * | 2011-09-30 | 2013-04-10 | 北大方正集团有限公司 | 打印机驱动程序测试方法和装置 |
CN103034460B (zh) * | 2011-09-30 | 2015-07-22 | 北大方正集团有限公司 | 打印机驱动程序测试方法和装置 |
CN103309627A (zh) * | 2012-03-07 | 2013-09-18 | 南京国图信息产业股份有限公司 | 基于打印驱动的文件双层转换方法 |
CN104050227A (zh) * | 2013-03-15 | 2014-09-17 | 柯尼卡美能达美国研究所有限公司 | 便携式文档格式文件预览操作 |
CN112368148A (zh) * | 2018-05-15 | 2021-02-12 | 录象射流技术公司 | 用于操作工业印刷机的系统和方法 |
CN113705152A (zh) * | 2020-05-20 | 2021-11-26 | 永中软件股份有限公司 | 一种实现文件即时预览的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4240690B2 (ja) | 情報処理装置と情報処理方法、及び情報処理システム、並びに記録媒体 | |
US8619297B2 (en) | Printing using a profile based on printer capabilities | |
US7822880B2 (en) | User interfaces for peripheral configuration | |
CN101894003B (zh) | 信息处理设备和控制方法 | |
JP5697486B2 (ja) | 印刷中継サーバ、印刷中継サーバを制御する制御方法、その制御方法のプログラム、および印刷処理方法 | |
US8526041B2 (en) | Efficiently controlling a print output destination in association with an information processing apparatus that has issued a print request | |
CN100514272C (zh) | 用于处理打印作业的设备 | |
CN1955916A (zh) | 分布式打印控制系统和分布式打印控制方法 | |
US20030014446A1 (en) | Pre-defined print option configurations for printing in a distributed environment | |
JP2005231372A (ja) | 1つのプリンタでは対応できないページを含むプリントジョブの調整並行プリンティング | |
US9977639B2 (en) | Network system, device server, and network system control method | |
EP2423812A1 (en) | Device and help server | |
US20100238498A1 (en) | Information processing apparatus capable of executing printing convenient for users, method of controlling information processing apparatus, and recording medium having control program for information processing apparatus recorded thereon | |
CN101593087A (zh) | 基于wince系统的打印预览方法 | |
CN112416483A (zh) | 一种多显示器接入云桌面的方法及相关设备 | |
US20180139481A1 (en) | Method and Apparatus for Incorporating Web Based Selection into Graphics System | |
US20030020944A1 (en) | Printer pausing and reordering | |
JP2009157868A (ja) | 情報処理装置、情報処理方法及びプログラム。 | |
JP2007293772A (ja) | 印刷装置制御システム及びプリンタドライバ | |
US8605305B2 (en) | Information processing apparatus, image forming apparatus and user interface generating method | |
JP4659938B2 (ja) | イベントに基づく印刷 | |
KR20070013703A (ko) | Ftp 를 이용한 인쇄시스템 및 인쇄방법 그리고 그에적용되는 사용자 단말장치 및 화상형성장치 | |
US8154744B2 (en) | Information processing device | |
CN116400872A (zh) | 一种在云桌面打印文件的方法及设备 | |
US8218166B2 (en) | Print processing system and print processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20091202 |