CN108563434A - 一种打印驱动开发方法 - Google Patents
一种打印驱动开发方法 Download PDFInfo
- Publication number
- CN108563434A CN108563434A CN201810301200.9A CN201810301200A CN108563434A CN 108563434 A CN108563434 A CN 108563434A CN 201810301200 A CN201810301200 A CN 201810301200A CN 108563434 A CN108563434 A CN 108563434A
- Authority
- CN
- China
- Prior art keywords
- modules
- printing
- gdi
- bitmap
- functions
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1224—Client or server resources management
- G06F3/1225—Software update, e.g. print driver, modules, plug-ins, fonts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Abstract
本发明公开了一种打印驱动开发方法,通过应用程序调用GDI的应用程序编程接口,再调用GDI引擎,将应用程序数据转换成显示数据bitmap格式。将Bitmap的数据转换成TIFF格式。TIFF转置模块负责将Bitmap驱动模块生成的bitmap数据的每一页转换成TIFF的格式。最终将生成的TIFF格式的数据发送到打印机种,完成打印。本发明的有益效果可使得应用程序对不同品牌的打印机进行调用。
Description
技术领域
本发明涉及一种打印驱动开发方法。
背景技术
打印机(Printer)是计算机的输出设备之一,用于将计算机处理结果打印在相关介质上。衡量打印机好坏的指标有三项:打印分辨率,打印速度和噪声。现有的市面上的打印机品牌众多。不同品牌的打印机驱动不同,无法对打印机驱动进行定制和修改。
发明内容
针对以上不足,本发明的目的就是提供一种打印驱动开发方法,可使得应用程序对不同品牌的打印机进行调用。
本发明的目的是通过这样的技术方案实现的,一种打印驱动开发方法,包括以下步骤:
步骤一:打印应用程序调用GDI的CreateDC函数,为打印设备创建设备上下文环境;
步骤二:GDI调用LoadLibrary函数将当前打印设备驱动程序载入内存;
步骤三:调用打印机图形动态链接库初始化当前打印设备驱动程序;
步骤四:GDI通过调用Enable模块对打印物理设备初始化和分配资源,并获得打印设备的信息和能力;
步骤五:GDI调用plotform模块,用于设计打印坐标系统;
步骤六:GDI调用pdevinfo模块,用于enable模块中初始化的打印物理设备中结构体有效;
步骤七:GDI调用page模块,所述page模块的DrvStartDoc函数被调用,用于开始打印作业;
步骤八:所述page模块的DrvStartPage函数被GDI调用来逐一初始化若干个打印页面,每个打印页面依次进行步骤九;
步骤九:GDI引擎在当前的一个打印页面上进行绘图;
步骤十:TIFF转置模块将当前一个打印页面的数据转换成TIFF的格式并保存在缓存中;
步骤十一:GDI调用DrvSendPage函数把缓存中的打印页面数据发送给BitMap渲染模块,所述BitMap渲染模块的SendPageHeader函数被调用,所述SendPageHeader函数为当前打印页面向打印设备发送初始化的信息;
步骤十二:GDI根据当前打印页面内容匹配出对应的处理模块进行处理;
步骤十三:压缩模块将处理后的数据进行压缩后,所述BitMap渲染模块的输出接口将数据进行输出打印;
步骤十四:所述BitMap渲染模块的FlushOutBuffer函数接口被调用来清除申请的打印缓冲区。
进一步,所述步骤十二中的处理模块包括有textout模块的DrvTextOut接口、Output模块的绘图接口和Bitbld模块的位图处理接口。
进一步,所述Bitbld模块的位图处理接口包括有位图变换接口、位图复制接口和像素输出接口。
进一步,所述GDI引擎与图形设备通过DDI函数进行通信。
进一步,GDI针对打印任务依次调用DrvDisSurface、DrvDisablePDEV和DrvDisableDriver函数接口,释放Enable模块分配的资源。
进一步,所述打印应用程序安装在移动设备或PC上。
由于采用上述技术方案,本发明具有如下的优点:通过应用程序调用GDI的应用程序编程接口,再调用GDI引擎,将应用程序数据转换成显示数据bitmap格式。将Bitmap的数据转换成TIFF格式。TIFF转置模块负责将Bitmap驱动模块生成的bitmap数据的每一页转换成TIFF的格式。最终将生成的TIFF格式的数据发送到打印机种,完成打印。可使得应用程序对不同品牌的打印机进行调用。
本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书和权利要求书来实现和获得。
附图说明
本发明的附图说明如下。
图1为本发明处理流程图。
图2为打印的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
如附图1至图2所示,一种打印驱动开发方法,当进行一次打印任务时,打印应用程序首先调用GDI(图形设备接口)的CreateDC函数生成一个打印设备描述上下文,之后GDI便调用LoadLibrary函数将当前打印机驱动程序装入内存,然后调用驱动Dell(打印机图形动态链接库)的初始化程序。打印应用程序可安装在移动设备或PC上。
GDI将调用Enable模块,向GDI提供一个接口函数DrvEnableDriver。该函数包含了驱动程序所支持的所有函数,GDI访问这些函数。然后再初始化PDEV,PDEV是物理设备的逻辑表现,每一个DPEV都包含了它所关联的打印物理设备的所有信息和数据。通过DrvEnablePDEV函数,驱动程序把信息提供给GDI,GDI通过此信息获得打印设备的信息和能力。Enable模块中包含了三个重要的结构,包括GDIINFO、DEVINFO和DEVMODEW。GDIINFO结构中包含打印机的所有能力和特点,DEVINFO结构体包含驱动程序以及驱动程序PDEV信息,DEVMODEW结构体重包含打印机设备的初始化以及当前打印环境和打印设置方面的信息。
GDI调用plotform模块,该模块的主要功能是设计打印坐标系统。
GDI调用pdevinfo模块,该模块的功能是使在enable模块中初始化的PDEV结构体有效。
GDI调用page模块,该模块的DrvStartDoc函数被调用,用来开始一个打印作业。DrvStartPage函数被调用来初始化一个新的打印页面,在其他任何绘图函数调用打印页面之前,DrvStartPage函数是用于重置打印页面以保证所有的绘图操作都是在一个干净的空白页面上进行。DrvStartPage函数被GDI调用来逐一初始化若干个打印页面,GDI引擎依次在每个打印页面上进行绘图;TIFF转置模块将当前一个打印页面的数据转换成TIFF的格式并保存在缓存中;TIFF转置模块负责在下一页开始之前,把上一页写入到buffer(缓存)中,然后在存入TIFF中。
当一个绘图操作在当前的打印页面上完成之后,DrvSendPage函数就被调用把这个已储存缓存中的页面发送给BitMap渲染模块,然后DrvEndDoc接口被调用。接着,GDI调用BitMap渲染模块。BitMap渲染模块中定义了打印图形动态库负责向假脱机和打印机输出数据的函数。SendPageHeader函数首先被调用,该函数为每个新绘制的页面向设备发送初始化的信息,帮助设备正确的调整自身系统和打印缩放比例。然后BitMap渲染模块做一些打印前的准备工作,如选择合适的画笔,申请内存空间以及设置边缘的像素等。
在BitMap渲染模块中,GDI会根据不同的任务调用相应的处理模块,对于文本输出,主要调用textout模块的DrvTextOut接口;对于图形输出,主要调用BitMap渲染模块定义的画圆、矩形、多边形等绘图函数接口;对于图像输出,则根据应用程序的具体要求会调用DrvStretchBlt(位图变换)、BandingHTBlt(版色调处理)、DrvCopyBits(位图复制)、SetPixelPlacement(像素输出)等接口来完成相应的处理。
在BitMap渲染模块中,要打印的图像数据在经过了各种变换以及版色调处理后,在发送到打印机设备之前,还要进行压缩处理,compress(图像压缩)模块被调用。compress模块定义来了很多压缩算法,这些方法对原始图像数据进行分析并决定采用哪种压缩算法最有效。把最小的比特数据把图像发送到打印机上。
调用了图像压缩模块后,GDI调用BitMap渲染模块的输出接口来完成打印数据的输出。当输出结束后,BitMap渲染模块的FlushOutBuffer函数接口被调用来清除申请的打印缓冲区。当一个打印作业完成之后,GDI会针对这个打印作业依次调用DrvDisSurface、DrvDisablePDEV、DrvDisableDriver函数接口,来释放之前分配的资源。
上述本发明驱动开发方法具体应用于下述打印步骤的步骤八中,以下为打印步骤(参考附图2);
s1.应用程序通知打印池开始一个新的打印任务;
s2.打印池调用打印接口dll,显示打印对话框,并将与打印设置相关的信息传给打印接口dell;
s3.应用程序调用GDI进行绘图操作;
s4.GDI将应用程序的绘图调用保存在EMF文件中,记录完毕将之发送给打印池;
s5.GDI返回,应用程序完成一次假脱机打印过程,可以进行其他任务;
s6.打印池调用GDI,把EMF文件中的绘图命令一条条分解到打印机上下文中;
s7.GDI通过系统调用,调用GDI引擎实现绘图操作;
s8.GDI引擎将GDI绘图命令分解组合,在打印机图形dll的帮助下,完成各种图形的绘制;
s9.打印机图形dll将绘图解码后的数据发往打印池;
s10.打印池把打印机数据发往打印机。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (6)
1.一种打印驱动开发方法,其特征在于,包括以下步骤:
步骤一:打印应用程序调用GDI的CreateDC函数,为打印设备创建设备上下文环境;
步骤二:GDI调用LoadLibrary函数将当前打印设备驱动程序载入内存;
步骤三:调用打印机图形动态链接库初始化当前打印设备驱动程序;
步骤四:GDI通过调用Enable模块对打印物理设备初始化和分配资源,并获得打印设备的信息和能力;
步骤五:GDI调用plotform模块,用于设计打印坐标系统;
步骤六:GDI调用pdevinfo模块,用于enable模块中初始化的打印物理设备中结构体有效;
步骤七:GDI调用page模块,所述page模块的DrvStartDoc函数被调用,用于开始打印作业;
步骤八:所述page模块的DrvStartPage函数被GDI调用来逐一初始化若干个打印页面,每个打印页面依次进行步骤九;
步骤九:GDI引擎在当前的一个打印页面上进行绘图;
步骤十:TIFF转置模块将当前一个打印页面的数据转换成TIFF的格式并保存在缓存中;
步骤十一:GDI调用DrvSendPage函数把缓存中的打印页面数据发送给BitMap渲染模块,所述BitMap渲染模块的SendPageHeader函数被调用,所述SendPageHeader函数为当前打印页面向打印设备发送初始化的信息;
步骤十二:GDI根据当前打印页面内容匹配出对应的处理模块进行处理;
步骤十三:压缩模块将处理后的数据进行压缩后,所述BitMap渲染模块的输出接口将数据进行输出打印;
步骤十四:所述BitMap渲染模块的FlushOutBuffer函数接口被调用来清除申请的打印缓冲区。
2.根据权利要求1所述的打印驱动开发方法,其特征在于:所述步骤十二中的处理模块包括有textout模块的DrvTextOut接口、Output模块的绘图接口和Bitbld模块的位图处理接口。
3.根据权利要求2所述的打印驱动开发方法,其特征在于:所述Bitbld模块的位图处理接口包括有位图变换接口、位图复制接口和像素输出接口。
4.根据权利要求1所述的打印驱动开发方法,其特征在于:所述GDI引擎与图形设备通过DDI函数进行通信。
5.根据权利要求1所述的打印驱动开发方法,其特征在于:GDI针对打印任务依次调用DrvDisSurface、DrvDisablePDEV和DrvDisableDriver函数接口,释放Enable模块分配的资源。
6.根据权利要求1所述的打印驱动开发方法,其特征在于:所述打印应用程序安装在移动设备或PC上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810301200.9A CN108563434A (zh) | 2018-04-04 | 2018-04-04 | 一种打印驱动开发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810301200.9A CN108563434A (zh) | 2018-04-04 | 2018-04-04 | 一种打印驱动开发方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108563434A true CN108563434A (zh) | 2018-09-21 |
Family
ID=63534303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810301200.9A Pending CN108563434A (zh) | 2018-04-04 | 2018-04-04 | 一种打印驱动开发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108563434A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170600A (zh) * | 2023-11-02 | 2023-12-05 | 中科方德软件有限公司 | Linux系统的打印处理方法、系统、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101802769A (zh) * | 2007-09-21 | 2010-08-11 | 西尔弗布鲁克研究股份有限公司 | 用于交互式打印机的打印机驱动器 |
CN102999299A (zh) * | 2011-09-13 | 2013-03-27 | 北京路模思科技有限公司 | 在Windows打印过程中监控打印数据的系统和方法 |
US20130227523A1 (en) * | 2012-02-28 | 2013-08-29 | Kyocera Document Solutions Inc. | Software-Developing Structured-Data-File Creating Apparatus and Method Capable of Efficiently Creating Data File Used in Developing Program for Device |
CN104636090A (zh) * | 2013-11-07 | 2015-05-20 | 柯尼卡美能达株式会社 | 打印机驱动器的印刷功能的追加方法 |
-
2018
- 2018-04-04 CN CN201810301200.9A patent/CN108563434A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101802769A (zh) * | 2007-09-21 | 2010-08-11 | 西尔弗布鲁克研究股份有限公司 | 用于交互式打印机的打印机驱动器 |
CN102999299A (zh) * | 2011-09-13 | 2013-03-27 | 北京路模思科技有限公司 | 在Windows打印过程中监控打印数据的系统和方法 |
US20130227523A1 (en) * | 2012-02-28 | 2013-08-29 | Kyocera Document Solutions Inc. | Software-Developing Structured-Data-File Creating Apparatus and Method Capable of Efficiently Creating Data File Used in Developing Program for Device |
CN104636090A (zh) * | 2013-11-07 | 2015-05-20 | 柯尼卡美能达株式会社 | 打印机驱动器的印刷功能的追加方法 |
Non-Patent Citations (1)
Title |
---|
侯海波: "Windows XP平台下打印机驱动程序分析与设计", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117170600A (zh) * | 2023-11-02 | 2023-12-05 | 中科方德软件有限公司 | Linux系统的打印处理方法、系统、设备和介质 |
CN117170600B (zh) * | 2023-11-02 | 2024-02-23 | 中科方德软件有限公司 | Linux系统的打印处理方法、系统、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8861014B2 (en) | Systems and methods for optimized printer throughput in a multi-core environment | |
JP2009140295A (ja) | 描画装置、印刷装置、描画方法、及びプログラム | |
JP2011070337A (ja) | 画像処理システム及び画像処理プログラム | |
US6429950B1 (en) | Method and apparatus for applying object characterization pixel tags to image data in a digital imaging device | |
US11720769B2 (en) | Methods and systems for enhancing raster image processing using artificial intelligence | |
US6860203B2 (en) | Method and apparatus for printing computer generated images | |
US20140362395A1 (en) | Image processing apparatus and method | |
JP2008117379A (ja) | エンコードされたラスタ文書を生成するシステム、方法およびコンピュータプログラム | |
CN108563434A (zh) | 一种打印驱动开发方法 | |
EP1217511A3 (en) | Print system, information processing apparatus and method, and computer-readable memory medium | |
CN102693097A (zh) | 图像处理系统和图像处理方法 | |
JP4035907B2 (ja) | 画像形成システム及びその制御方法 | |
JP2006244248A (ja) | 画像処理装置及び画像処理方法ならびに画像処理方法を実行するプログラム | |
US20050213142A1 (en) | Optimization techniques during processing of print jobs | |
JP3211417B2 (ja) | ページ記述言語処理装置 | |
US7236268B2 (en) | Adaptive screening in raster image processing of complex pages | |
US20040257371A1 (en) | Pipelined architecture for high speed raster image processor | |
JP2008060730A (ja) | 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体 | |
US20140268240A1 (en) | System And Method For The Accelerated Screening Of Digital Images | |
JP4325339B2 (ja) | 印刷システム、ホストコンピュータ及びプリンタドライバ | |
JP4853504B2 (ja) | 画像処理プログラム及び画像処理システム | |
KR100571960B1 (ko) | 화상형성장치의 제어장치 및 방법 | |
KR100444899B1 (ko) | 화상의회전변환방법 | |
JP2005038084A (ja) | 描画データの変換方法及び変換装置 | |
JP2010130374A (ja) | 画像形成装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180921 |