CN117170600B - Linux系统的打印处理方法、系统、设备和介质 - Google Patents
Linux系统的打印处理方法、系统、设备和介质 Download PDFInfo
- Publication number
- CN117170600B CN117170600B CN202311445179.7A CN202311445179A CN117170600B CN 117170600 B CN117170600 B CN 117170600B CN 202311445179 A CN202311445179 A CN 202311445179A CN 117170600 B CN117170600 B CN 117170600B
- Authority
- CN
- China
- Prior art keywords
- printing
- target
- image
- function
- 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.)
- Active
Links
- 238000007639 printing Methods 0.000 title claims abstract description 376
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 109
- 238000012545 processing Methods 0.000 claims abstract description 50
- 230000009467 reduction Effects 0.000 claims abstract description 29
- 230000006870 function Effects 0.000 claims description 162
- 230000008569 process Effects 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 15
- 230000003993 interaction Effects 0.000 claims description 7
- 230000003321 amplification Effects 0.000 claims description 4
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 16
- 238000013507 mapping Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Editing Of Facsimile Originals (AREA)
Abstract
本申请实施例提供了一种Linux系统的打印处理方法、系统、设备和介质,其中的方法具体包括:Linux打印服务向兼容层软件发送打印信息;兼容层软件向目标打印程序发送打印信息,目标动态链接库调用目标打印驱动程序;目标打印驱动程序根据打印信息,创建打印设备对应的设备上下文,并对目标文档中待处理图像的尺寸与打印设备的打印区域的尺寸进行比较,以得到比较结果;在比较结果为大于的情况下,利用差值方法,对待处理图像进行缩小处理,以得到目标图像;将目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;并向Linux打印服务发送打印指令数据。本申请实施例可以提高Linux系统下的打印内容的完整性。
Description
技术领域
本申请实施例涉及打印技术领域,特别是涉及一种Linux系统的打印处理方法、系统、设备和介质。
背景技术
打印通常是指把电脑或其他电子设备中的文字或图片等数据,通过打印机等输出在纸张等记录物上。目前的一些打印机缺乏支持linux系统的打印驱动,导致这些打印机无法在linux系统下使用。
为了在Linux系统下使用更多的打印机,目前可以利用例如Wine(Wine不是模拟器,Wine Is Not an Emulator)的兼容层软件,将Windows(视窗)系统对应的打印驱动程序(以下简称Windows打印驱动程序)移植到Linux系统上,并调用Windows打印驱动程序,对目标应用发送的打印请求进行处理。
相关技术在Linux系统下对目标应用发送的打印请求进行处理的情况下,有时会出现内容缺失的问题。
发明内容
本申请实施例提供了一种Linux系统的打印处理方法,能够提高Linux系统下的打印内容的完整性。
相应的,本申请实施例还提供了一种应用移植环境下的打印处理系统、一种电子设备和一种机器可读介质,用以保证上述方法的实现及应用。
为了解决上述问题,本申请实施例公开了一种Linux系统的打印处理方法,所述Linux系统上运行有兼容层软件,所述兼容层软件用于运行与Windows系统相匹配的目标打印程序、目标动态链接库和目标打印驱动程序,所述方法包括:
Linux打印服务接收打印请求,并向所述兼容层软件发送所述打印请求对应的打印信息;所述打印信息包括:目标文档;
所述兼容层软件在接收到所述打印信息后,向所述目标打印程序发送所述打印信息,以使所述目标打印程序在接收到所述打印信息后,调用与Windows系统相匹配的目标动态链接库,进而使所述目标动态链接库调用所述目标打印驱动程序;
所述目标打印驱动程序根据所述打印信息,创建打印设备对应的设备上下文,并对所述目标文档中待处理图像的尺寸与打印设备的打印区域的尺寸进行比较,以得到对应的比较结果;
所述目标打印驱动程序在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;
所述目标打印驱动程序将所述目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;
所述目标打印驱动程序向所述Linux打印服务发送所述打印指令数据。
为了解决上述问题,本申请实施例公开了一种Linux系统的打印处理系统,所述系统包括:Linux打印服务、兼容层软件、目标动态链接库和目标打印驱动程序;
其中,所述Linux打印服务与至少一个目标应用和至少一个打印设备相连接,用于接收目标应用发送的打印请求,并向所述兼容层软件发送所述打印请求对应的打印信息;所述打印信息包括:目标文档;
所述兼容层软件用于运行与Windows系统相匹配的目标打印程序、目标动态链接库和目标打印驱动程序;并且,在接收到所述打印信息后,向所述目标打印程序发送所述打印信息,以使所述目标打印程序在接收到所述打印信息后,调用与Windows系统相匹配的目标动态链接库,进而使所述目标动态链接库调用所述目标打印驱动程序;
所述目标打印驱动程序用于根据所述打印信息,创建打印设备对应的设备上下文,并对所述目标文档中待处理图像的尺寸与打印设备的打印区域的尺寸进行比较,以得到对应的比较结果;在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像,并将所述目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;以及,向所述Linux打印服务发送所述打印指令数据。
可选地,所述目标打印驱动程序还用于在所述比较结果符合预设小于条件的情况下,利用差值方法,对所述待处理图像进行放大处理,以得到与所述打印区域的尺寸相适配的目标图像。
可选地,所述利用差值方法,对所述待处理图像进行缩小处理,具体包括:在所述待处理图像中确定出目标图像中的第二像素点对应的四个第一像素点;利用双线性插值方法,根据所述待处理图像中四个第一像素点的像素值,确定所述目标图像中的第二像素点的像素值。
可选地,所述打印信息还包括:打印纸张尺寸;所述目标打印驱动程序还用于根据所述打印纸张尺寸和打印设备的分辨率信息,确定所述打印区域的尺寸。
可选地,所述兼容层软件在接收到所述打印信息后,加载所述目标打印驱动程序,并对所述目标打印驱动程序进行初始化,以得到所述目标打印驱动程序对应的功能列表;
所述功能列表包括:
创建打印设备对应的设备上下文功能;
启动文档功能;
启动文档页功能;
图像绘制功能;
结束文档页打印功能;以及
结束文档打印功能;
其中,所述图像绘制功能包括:对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,以得到对应的比较结果;所述目标打印驱动程序在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;将所述目标图像绘制到设备上下文中,以得到对应的绘制图像。
可选地,所述目标动态链接库包括第一功能函数,所述目标打印驱动程序包括:第二功能函数,则所述目标动态链接库与所述目标打印驱动程序之间的交互过程具体包括:
所述第二功能函数根据所述第一功能函数发送的打印信息和打印设备相关信息,创建打印设备对应的设备上下文,并向所述第一功能函数返回设备上下文;
所述第二功能函数根据所述第一功能函数发送的打印信息和目标打印程序的要求,创建所述打印信息对应的打印任务,设置所述打印任务对应的打印参数,并向所述第一功能函数返回所述打印参数;
所述第二功能函数根据所述第一功能函数发送的打印信息和打印参数,针对目标文档包含的任一页面,确定对应的页面打印信息,并向所述第一功能函数返回所述页面打印信息;
所述第二功能函数根据所述第一功能函数发送的页面打印信息,对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,以得到对应的比较结果;在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;将所述目标图像绘制到设备上下文中,以得到页面对应的绘制图像,并向所述第一功能函数返回所述页面对应的绘制图像;
所述第二功能函数根据所述第一功能函数发送的绘制图像,将页面对应的绘制图像转换成打印设备能够识别的打印指令数据,并将这些打印指令数据写到打印池的打印缓冲文件中存储;
所述第二功能函数在接收到所述第一功能函数发送的打印任务完成信息后,结束打印任务。
本申请实施例还公开了一种电子设备,包括:处理器;和存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如本申请实施例所述的方法。
本申请实施例还公开了一种机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如本申请实施例所述的方法。
本申请实施例包括以下优点:
本申请实施例的技术方案中,目标打印驱动程序在打印处理过程中,对目标文档中待处理图像的尺寸与打印区域的尺寸进行比较,并在该比较结果为大于的情况下,利用差值方法,对该待处理图像进行缩小处理,以得到与该打印区域的尺寸相适配的目标图像;进一步,该目标打印驱动程序将该目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据。
由于本申请实施例基于待处理图像的缩小处理,能够使缩小处理后的目标图像的尺寸与打印区域的尺寸相适配,故本申请实施例能够将待处理图像包含的全部内容控制在打印区域内。在此基础上,本申请实施例能够提高Linux系统下的打印内容的完整性。
附图说明
图1是本申请一个实施例的Linux系统的打印处理系统的结构示意图;
图2是本申请一个实施例的兼容层环境下目标打印程序、目标动态链接库和目标打印驱动程序之间的交互过程的示意图;
图3是本申请一个实施例的Linux系统的打印处理方法的步骤流程示意图;
图4是本申请一个实施例的待处理图像中目标像素点的位置P1与目标图像中第二像素点的位置P2之间的映射关系的示意图;
图5是本申请一个实施例的双线性插值方法的实现过程的示意图;
图6是本申请一个实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请实施例中,兼容层软件是一种能够在多种兼容POSIX(可移植操作系统接口,Portable Operating System Interface)的第一操作系统上运行第二操作系统的应用程序的兼容层。具体到本申请实施例,第一操作系统为Linux系统,第二操作系统为Windows系统,兼容层软件能够将Windows API(应用程序编程接口,Application ProgramInterface)的调用翻译成为动态的POSIX调用,因此能够使Windows应用程序在Linux系统中运行。
本申请实施例可以利用兼容层软件,在Linux系统上运行与Windows系统相匹配的打印程序、动态链接库和打印驱动程序(以下简称Windows打印程序和目标动态链接库和Windows打印驱动程序)。Windows打印程序和Windows打印驱动程序可以是与Windows系统相匹配的、且与打印设备相关的程序。
目标动态链接库可以是Windows系统提供的动态链接库。目标动态链接库的例子可以包括:GDI32模块。GDI32模块是存放在Windows系统文件夹中的一个动态链接库,是Windows系统下图形用户界面的应用拓展。
由于Windows系统采用的打印服务与Linux系统采用的打印服务(以下简称Linux打印服务)是不同的;因此,Linux系统采用的打印服务与Windows打印程序、目标动态链接库和Windows打印驱动程序并不能直接交互。因此,本申请实施例可以利用兼容层软件,进行Linux打印服务与Windows打印程序、目标动态链接库和Windows打印驱动程序之间的交互。
Linux打印服务的例子可以包括:CUPS(通用Unix打印系统,Common UNIXPrinting System)等。可以理解,本申请实施例对于具体的Linux打印服务不加以限制。
相关技术的Windows打印驱动程序通常将用户需要打印的图像绘制到设备上下文。这样,在用户需要打印的图像超出打印设备的打印区域的情况下,将无法在纸张上呈现待处理图像的所有内容,也即会出现内容缺失的问题。
针对相关技术中Linux系统下的打印过程出现内容缺失的技术问题,本申请实施例提供了一种Linux系统的打印处理方法,该Linux系统上运行有兼容层软件,该兼容层软件用于运行与Windows系统相匹配的目标打印程序、目标动态链接库和目标打印驱动程序,该方法具体包括:
Linux打印服务接收打印请求,并向该兼容层软件发送该打印请求对应的打印信息;该打印信息具体包括:目标文档;
该兼容层软件在接收到该打印信息后,向该目标打印程序发送该打印信息,以使该目标打印程序在接收到该打印信息后,调用与Windows系统相匹配的目标动态链接库,进而使该目标动态链接库调用该目标打印驱动程序;
该目标打印驱动程序根据该打印信息,创建打印设备对应的设备上下文,并对该目标文档中待处理图像的尺寸与该打印区域的尺寸进行比较,以得到对应的比较结果;
该目标打印驱动程序在该比较结果为大于的情况下,利用差值方法,对该待处理图像进行缩小处理,以得到与该打印区域的尺寸相适配的目标图像;
该目标打印驱动程序将该目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;
该目标打印驱动程序向该Linux打印服务发送该打印指令数据。
本申请实施例提供了一种与Windows系统相匹配的目标打印驱动程序。该目标打印驱动程序用于克服相关技术中Linux系统下的打印过程出现内容缺失的技术问题。
本申请实施例的目标打印驱动程序在打印处理过程中,对目标文档中待处理图像的尺寸与打印区域的尺寸进行比较,并在该比较结果为大于的情况下,利用差值方法,对该待处理图像进行缩小处理,以得到与该打印区域的尺寸相适配的目标图像;进一步,该目标打印驱动程序将该目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据。
本申请实施例基于待处理图像的缩小处理,能够使缩小处理后的目标图像的尺寸与打印区域的尺寸相适配,故本申请实施例能够将待处理图像包含的全部内容控制在打印区域内。在此基础上,本申请实施例能够提高Linux系统下的打印内容的完整性。
系统实施例
参考图1,示出了本申请一个实施例的Linux系统的打印处理系统的结构示意图,该系统具体包括:Linux打印服务101、兼容层软件102、目标动态链接库103和目标打印驱动程序104。
其中,Linux打印服务101与至少一个目标应用和至少一个打印设备相连接。
Linux打印服务101可以接收目标应用发送的打印请求。目标应用可以是Windows应用或者Linux应用。打印请求中可以包含:打印文档和打印设置信息。打印设置信息可以包括:打印纸张尺寸、打印方向、打印份数等信息。
Linux打印服务101的例子可以包括:CUPS等。
Linux打印服务101可以针对打印请求,对打印文档进行格式转换,以得到打印设备能够识别的目标文档。例如,目标文档的格式可以为BMP(位图,Bitmap)格式。目标文档中可以包含:一个或多个待处理图像。在具体实现中,Linux打印服务101可以利用过滤器,对打印文档进行格式转换。可以理解,本申请实施例对于具体的格式转换过程不加以限制。
Linux打印服务101还可以向兼容层软件102发送该打印请求对应的打印信息;该打印信息具体包括:目标文档。该打印信息还可以包括:前述的打印设置信息。
兼容层软件102用于运行与Windows系统相匹配的目标打印程序、目标动态链接库和目标打印驱动程序。并且,兼容层软件102在接收到该打印信息后,会向目标打印程序发送该打印信息,以使该目标打印程序在接收到该打印信息后,调用与Windows系统相匹配的目标动态链接库103,进而使该目标动态链接库调用目标打印驱动程序104。目标打印驱动程序104可以采用库调用的方式,访问兼容层环境中的模块和函数。
目标打印驱动程序104用于根据所述打印信息,创建打印设备对应的设备上下文,并对所述目标文档中待处理图像的尺寸与打印设备的打印区域的尺寸进行比较,以得到对应的比较结果;在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像,并将所述目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;以及,向所述Linux打印服务发送所述打印指令数据。
在具体实现中,所述利用差值方法,对所述待处理图像进行缩小处理,具体包括:在所述待处理图像中确定出目标图像中的第二像素点对应的四个第一像素点;利用双线性插值方法,根据所述待处理图像中四个第一像素点的像素值,确定所述目标图像中的第二像素点的像素值。
在具体实现中,所述目标打印驱动程序还用于在所述比较结果符合预设小于条件的情况下,利用差值方法,对所述待处理图像进行放大处理,以得到与所述打印区域的尺寸相适配的目标图像。
在具体实现中,所述打印信息还可以包括:打印纸张尺寸;所述目标打印驱动程序还可用于根据所述打印纸张尺寸和打印设备的分辨率信息,确定所述打印区域的尺寸。
参照图2,示出了本申请一个实施例的兼容层环境下目标打印程序、目标动态链接库和目标打印驱动程序之间的交互过程的示意图,其中,目标打印程序可以调用目标动态链接库中的第一功能函数。第一功能函数可以在注册表中查找打印设备对应的目标打印驱动程序,并确定目标打印驱动程序对应的第二功能函数。因此,第一功能函数可以向第二功能函数传递对应的工作参数。可以理解,第一功能函数和第二功能函数用于执行的功能是相匹配的。
在实际应用中,目标动态链接库的第一功能函数具体可以包括:第一功能函数A1(Gdi32.CreateDC)至第一功能函数A6(Gdi32.EndDoc)。其中,第一功能函数A1用于创建打印设备对应的设备上下文;第一功能函数A2(Gdi32.StartDoc)用于启动文档;第一功能函数A3(Gdi32.StartPage)用于启动文档页;第一功能函数A4(Gdi32.StretchBlt)用于进行图像绘制;第一功能函数A5(Gdi32.EndPage)用于结束文档页打印;第一功能函数A6用于结束文档打印。
假设用Hotpot.drv表示本申请实施例的目标打印驱动程序,则本申请实施例可以在Hotpot.drv中实现图像处理的功能列表。
在具体实现中,兼容层软件102在接收到打印信息后,加载所述目标打印驱动程序,并对所述目标打印驱动程序进行初始化,以得到所述目标打印驱动程序对应的功能列表;
所述功能列表具体可以包括:
创建打印设备对应的设备上下文功能;
启动文档功能;
启动文档页功能;
图像绘制功能;
结束文档页打印功能;以及
结束文档打印功能;
相应地,目标打印驱动程序的第二功能函数具体包括:第二功能函数B1(hotpot.CreateDC)至第二功能函数B6(hotpot.EndDoc)。其中,第二功能函数B1用于创建打印设备对应的设备上下文;第二功能函数B2(Hotpot.StartDoc)用于启动文档;第二功能函数B3(Hotpot.StartPage)用于启动文档页;第二功能函数B4(Hotpot. PutImage)用于进行图像绘制;第二功能函数B5(Hotpot.EndPage)用于结束文档页打印;第二功能函数B6用于结束文档打印。
目标打印驱动程序104的图像绘制功能具体包括:对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,以得到对应的比较结果;所述目标打印驱动程序在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;将所述目标图像绘制到设备上下文中,以得到对应的绘制图像。
由于目标打印驱动程序104基于待处理图像的缩小处理,使缩小处理后的目标图像的尺寸与打印区域的尺寸相适配,故本申请实施例能够将待处理图像包含的全部内容控制在打印区域内。在此基础上,本申请实施例能够提高Linux系统下的打印内容的完整性。
在实际应用中,目标打印驱动程序104可以将打印指令数据以文件的形式,拷贝至预设位置。其中,上述文件可以为打印池的打印缓冲文件。打印缓冲文件可以包括:打印文档的所有页面对应的打印指令数据。Linux打印服务101可以将打印指令数据对应的打印缓冲文件写入打印设备对应的端口,以供打印设备读取和打印。
方法实施例
参考图3,示出了本申请一个实施例的Linux系统的打印处理方法的步骤流程示意图,该Linux系统上可以运行有兼容层软件,该兼容层软件用于运行与Windows系统相匹配的目标打印程序、目标动态链接库和目标打印驱动程序,该方法具体可以包括如下步骤:
步骤301、Linux打印服务接收打印请求,并向兼容层软件发送该打印请求对应的打印信息;该打印信息具体可以包括:目标文档;
步骤302、兼容层软件在接收到该打印信息后,向该目标打印程序发送该打印信息,以使该目标打印程序在接收到该打印信息后,调用与Windows系统相匹配的目标动态链接库,进而使该目标动态链接库调用目标打印驱动程序;
步骤303、目标打印驱动程序根据该打印信息,创建打印设备对应的设备上下文,并对该目标文档中待处理图像的尺寸与该打印区域的尺寸进行比较,以得到对应的比较结果;
步骤304、目标打印驱动程序在该比较结果为大于的情况下,利用差值方法,对该待处理图像进行缩小处理,以得到与该打印区域的尺寸相适配的目标图像;
步骤305、目标打印驱动程序将该目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;
步骤306、目标打印驱动程序向该Linux打印服务发送该打印指令数据。
本申请实施例可以应用于安装有Linux系统的电子设备,用于用户在电子设备中使用Windows系统的打印驱动程序进行打印的过程中,克服相关技术中Linux系统下的打印过程出现内容缺失的技术问题,且能够提高Linux系统下的打印内容的完整性。
在步骤301中,Linux打印服务可以对打印请求中的打印文档进行格式转换,以得到位图格式的目标文档,并向兼容层软件发送该打印请求对应的目标文档。还可以向兼容层软件发送该打印请求对应的打印设置信息等其他打印信息。
在步骤302中,兼容层软件在接收到该打印信息后,会加载目标打印程序。目标打印程序为了实现打印功能,会加载目标动态链接库。目标动态链接库在打印的情况下会加载目标打印驱动程序,由目标打印驱动程序来实现打印功能。
步骤303至步骤305涉及图2所示的:兼容层环境下目标打印程序、目标动态链接库和目标打印驱动程序之间的交互过程。
在具体实现中,所述目标动态链接库可以包括第一功能函数;上述目标打印驱动程序可以包括:第二功能函数,则所述目标动态链接库与所述目标打印驱动程序之间的交互过程具体包括:
所述第二功能函数根据所述第一功能函数发送的打印信息和打印设备相关信息,创建打印设备对应的设备上下文,并向所述第一功能函数返回设备上下文;
所述第二功能函数根据所述第一功能函数发送的打印信息和目标打印程序的要求,创建所述打印信息对应的打印任务,设置所述打印任务对应的打印参数,并向所述第一功能函数返回所述打印参数;
所述第二功能函数根据所述第一功能函数发送的打印信息和打印参数,针对目标文档包含的任一页面,确定对应的页面打印信息,并向所述第一功能函数返回所述页面打印信息;
所述第二功能函数根据所述第一功能函数发送的页面打印信息,对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,以得到对应的比较结果;在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;将所述目标图像绘制到设备上下文中,以得到页面对应的绘制图像,并向所述第一功能函数返回所述页面对应的绘制图像;
所述第二功能函数根据所述第一功能函数发送的绘制图像,将页面对应的绘制图像转换成打印设备能够识别的打印指令数据,并将这些打印指令数据写到打印池的打印缓冲文件中存储;
所述第二功能函数在接收到所述第一功能函数发送的打印任务完成信息后,结束打印任务。
本申请实施例中,兼容层环境下目标打印程序、目标动态链接库和目标打印驱动程序之间的交互过程具体包括如下步骤:
步骤S1、执行创建打印设备对应的设备上下文功能。
目标动态链接库的第一功能函数A1(Gdi32.CreateDC)在被目标打印程序调用的情况下,会向第二功能函数B1(hotpot.CreateDC)发送对应的第一调用请求中包含的打印信息;其中,目标打印程序在每次调用目标动态链接库的过程中,会向目标动态链接库发送对应的调用请求。第一调用请求是步骤S1对应的调用请求。同理,步骤S2至步骤S5也可以对应有调用请求。
第二功能函数B1会读取打印设备的PPD(页面描述语言打印机定义,PostScriptPrinter Definition),根据PPD中描述的打印设备相关信息,创建打印设备对应的设备上下文(DC,Device Context),并向第一功能函数A1返回设备上下文,第一功能函数A1则可以向目标打印程序返回设备上下文。其中,打印设备相关信息可以包括:打印设备的分辨率信息、打印设备的色彩信息等。其中,打印设备的分辨率信息的例子可以包括:DPI(每英寸点数,Dots Per Inch),用于表示每英寸长度内的像素点数。
步骤S2、执行启动文档功能。
目标动态链接库的第一功能函数A2(Gdi32.StartDoc)在被目标打印程序调用的情况下,会向第二功能函数B2(hotpot.StartDoc)发送对应的第二调用请求中包含的打印信息。
第二功能函数B2可以根据目标打印程序的要求,针对打印信息分配打印编号,创建打印编号对应的打印任务,设置打印任务对应的打印参数,并将打印任务加入打印队列中。打印参数可以包括:页面数量、打印方向、打印质量等。
第二功能函数B2可以向第二功能函数A2返回打印任务对应的打印参数,第一功能函数A2则可以向目标打印程序返回打印任务对应的打印参数。
步骤S3、执行启动页面功能。
目标动态链接库的第一功能函数A3(Gdi32. StartPage)在被目标打印程序调用的情况下,会向第二功能函数B3(hotpot. StartPage)发送对应的第三调用请求中包含的打印信息和打印参数。
目标文档可以包括一个或多个页面。第二功能函数B3可以针对目标文档包含的任一页面,确定对应的页面打印信息。页面打印信息可以包括:打印纸张尺寸和页面对应的待处理图像的尺寸等信息。
第二功能函数B3可以向第一功能函数A3返回页面对应的页面打印信息,第一功能函数A3则可以向目标打印程序返回页面对应的页面打印信息。
步骤S4、执行图像绘制功能。
目标动态链接库的第一功能函数A4(Gdi32.StretchBlt)在被目标打印程序调用的情况下,会向第二功能函数B4(hotpot.PutImage)发送对应的第四调用请求中包含的页面打印信息。
相关技术的Windows打印驱动程序通常将用户需要打印的图像绘制到设备上下文。这样,在用户需要打印的图像超出打印设备的打印区域的情况下,将会出现内容缺失的问题。
与相关技术不同的是,本申请实施例的第二功能函数B4执行的图像绘制功能具体包括:对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,以得到对应的比较结果;所述目标打印驱动程序在所述比较结果为大于的情况下,利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;将所述目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据。
其中,上述打印信息还可以包括:打印纸张尺寸;打印区域的尺寸的确定过程,具体包括:目标打印驱动程序根据所述打印纸张尺寸和打印设备的分辨率信息,确定所述打印区域的尺寸。
由于分辨率信息可以表示每英寸长度内的像素点数,打印纸张尺寸可以代表高度方向和宽度方向的尺寸,故可以根据打印纸张尺寸和打印设备的分辨率信息的乘积结果,确定打印区域的尺寸。打印区域的尺寸可以表征高度方向和宽度方向分别包含的像素点数量。
待处理图像的尺寸可以为:高度尺寸(H)和宽度尺寸(W),分别表示待处理图像对应的文档页面在高度方向和宽度方向分别包含的像素点数量。
对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,得到的比较结果可以包括:高度方向和宽度方向分别对应的比较结果。高度方向对应的比较结果可以包括:大于、等于或小于。宽度方向对应的比较结果可以包括:大于、等于或小于。
在高度方向和宽度方向中任一对应的比较结果为大于的情况下,本申请实施例可以利用差值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像。目标图像的尺寸与所述打印区域的尺寸相适配,具体包括:目标图像的宽度方向尺寸不大于打印区域的宽度方向尺寸,以及,目标图像的高度方向尺寸不大于打印区域的高度方向尺寸。
插值是指根据已知数据点的数值,通过某种数学方法来推算出未知数据点的数值。具体到本申请实施例,已知数据点的数值可以指待处理图像所包含的第一像素点的像素值,未知数据点的数值可以指目标图像所包含的第二像素点的像素值。
插值方法可以包括:最近邻插值方法、双线性插值方法和双三次插值方法等。本领域技术人员可以根据实际应用需求,采用任一插值方法,确定目标图像中的第二像素点的像素值。
以双线性插值方法为例,上述利用差值方法,对该待处理图像进行缩小处理的过程,具体包括:在所述待处理图像中确定出目标图像中的第二像素点对应的四个第一像素点;利用双线性插值方法,根据所述待处理图像中四个第一像素点的像素值,确定所述目标图像中的第二像素点的像素值。
本申请实施例可以首先确定目标图像的尺寸:高度尺寸(a)和宽度尺寸(b),并根据待处理图像的尺寸和目标图像的尺寸,确定待处理图像中目标像素点的位置P1与目标图像中第二像素点的位置P2之间的映射关系。
其中,目标图像的尺寸对应的宽高比例与待处理图像的尺寸对应的宽高比例可以相等。具体而言,b/a=W/H。本申请实施例可以在两者的宽高比例相等、以及b不大于W、a不大于H的情况下,确定a和b的具体数值。
在(0,0)表示目标图像的左上角坐标的情况下,上述映射关系可以表示为:
P1X=[(P2X+0.5)/scale]-0.5
P1Y=[(P2Y+0.5)/scale]-0.5
其中,scale表示缩小倍数,也是a/H或者b/W。(P1X,P1Y)为目标像素点的位置P1的坐标;(P2X,P2Y)为第二像素点的位置P2的坐标。
本申请实施例可以根据第二像素点的位置P2、以及上述映射关系,确定目标像素点的位置P1的坐标(i + u , j + v);然后,将待处理图像中坐标(i + u , j + v)周围的四个像素点作为四个第一像素点。
对于目标像素点(i + u , j + v) (其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),目标像素点对应的四个第一像素点的坐标可以分别为:(i , j)、(i + 1, j)、(i , j + 1)、(i + 1 , j + 1)。
参照图4,示出了本申请一个实施例的待处理图像中目标像素点的位置P1与目标图像中第二像素点的位置P2之间的映射关系的示意图。
其中,待处理图像的尺寸为6×6,目标图像的尺寸为3×3,scale=1/2。假设目标图像中第二像素点的位置P2的坐标为(1,1),即为P2X=1,P2Y=1,则根据上述映射关系,可以确定目标像素点的位置P1(P1X,P1Y):
P1X=[(1+0.5)/scale]-0.5=2.5
P1Y=[(1+0.5)/scale]-0.5=2.5
对于位置P1(2.5,2.5)而言,i=2,j=2,故可以将待处理图像中坐标(i + u , j +v)周围的四个像素点作为四个第一像素点,分别为:(2,2)、(2,3)、(3,2)和(3,3)。
双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。在具体实现中,双线性插值方法可以对四个第一像素点的像素值进行加权运算,以得到目标图像中的第二像素点的像素值。
参照图5,示出了本申请一个实施例的双线性插值方法的实现过程的示意图,其中,四个第一像素点分别为:A(x1,y2)、B(x2,y2)、C(x2,y1)和D(x1,y1),双线性插值的目标是:确定第二像素点T(x,y)的像素值。
第一种双线性插值方法可以首先在x方向进行线性插值,然后在y方向进行线性插值。或者,第二种双线性插值方法可以首先在y方向进行线性插值,然后在x方向进行线性插值。
例如,第一种双线性插值方法的过程具体包括:
首先,在x方向进行线性插值。
具体而言,假设f(x,y)表示任一点(x,y)的像素值,则可以利用公式(1)确定F点的像素值f(x,y1),以及,利用公式(2)确定E点的像素值f(x,y2)。
(1)
(2)
然后在y方向进行线性插值。具体而言,具体而言,可以利用公式(3)确定第二像素点T(x,y)的像素值。
(3)
本申请实施例将所述目标图像绘制到设备上下文中的过程具体包括:将目标图像对应的位图信息复制到设备上下文中。位图信息具体包括:高度尺寸(a)和宽度尺寸(b)、第二像素点的像素值和颜色索引等信息。
需要说明的是,设备上下文是根据打印区域的尺寸创建的。由于打印设备的打印区域与设备上下文的可绘制区域相匹配,而打印区域是根据打印纸张尺寸和打印设备的分辨率信息确定的;这样,在待处理图像的尺寸超出打印设备的打印区域的情况下,将无法在设备上下文和纸张上呈现待处理图像的所有内容。
而本申请实施例将打印区域缩小为目标图像,且目标图像的尺寸是与所述打印区域的尺寸相适配的。目标图像的尺寸与所述打印区域的尺寸相适配,具体包括:目标图像的宽度方向尺寸不大于打印区域的宽度方向尺寸,以及,目标图像的高度方向尺寸不大于打印区域的高度方向尺寸。因此,本申请实施例在待处理图像的尺寸超出打印设备的打印区域的情况下,也能够在纸张上呈现目标图像的所有内容。
与对所述待处理图像进行缩小处理的原理相同,本申请实施例还可以利用差值方法,对所述待处理图像进行放大处理。本申请实施例的方法还可以包括:目标打印驱动程序在所述比较结果符合预设小于条件的情况下,利用差值方法,对所述待处理图像进行放大处理,以得到与所述打印区域的尺寸相适配的目标图像。
预设小于条件可由本领域技术人员根据实际应用需求确定。例如,预设小于条件可以为:待处理图像的宽度方向尺寸与打印区域的宽度方向尺寸的比值小于第一阈值、以及,待处理图像的高度方向尺寸与打印区域的高度方向尺寸的比值小于第二阈值。第一阈值和第二阈值均可以为小于1的正数。例如,第一阈值和第二阈值可以为0.5或者小于0.5的正数。
本申请实施例可以在待处理图像的宽度方向尺寸远远小于打印区域的宽度方向尺寸、以及待处理图像的高度方向尺寸远远小于打印区域的高度方向尺寸的情况下,基于待处理图像的放大处理,提升打印质量。
对于对所述待处理图像进行放大处理的过程而言,由于其与对所述待处理图像进行缩小处理的过程类似,故在此不作赘述,相互参照即可。放大处理后的目标图像的尺寸,也可以与所述打印区域的尺寸相适配;具体而言,目标图像的宽度方向尺寸不大于打印区域的宽度方向尺寸,以及,目标图像的高度方向尺寸不大于打印区域的高度方向尺寸。
假设将目标图像对应的位图信息复制到设备上下文中,得到了绘制图像;则第二功能函数B4可以向第一功能函数A4返回页面对应的绘制图像,第一功能函数A4则可以向目标打印程序返回页面对应的绘制图像。
步骤S5、执行结束文档页打印功能。
目标动态链接库的第一功能函数A5(Gdi32.EndPage)在被目标打印程序调用的情况下,会向第二功能函数B5(hotpot.EndPage)发送对应的第五调用请求中包含的页面对应的绘制图像。
本申请实施例的第二功能函数B5可以将页面对应的绘制图像转换成打印设备能够识别的打印指令数据,并将这些打印指令数据写到打印池的打印缓冲文件中存储。打印指令数据可以采用打印机语言的格式,打印机语言的例子可以包括:PCL(打印机控制语言,Printer Command Language)等。
本申请实施例的第二功能函数B5会将打印池的打印缓冲文件拷贝到预设位置,等待Linux打印服务将打印缓冲文件写入打印设备对应的端口。预设位置可以是目标打印程序设定的位置。
因此,上述目标打印驱动程序向该Linux打印服务发送所述打印指令数据,具体包括:目标打印驱动程序将所述打印指令数据以文件的形式,拷贝至预设位置。其中,打印缓冲文件可以包括:打印文档的所有页面对应的打印指令数据。第二功能函数B6还可以进行打印环境的清理释放,最终完成打印任务。
如图1所示,Linux打印服务可以将打印指令数据对应的打印缓冲文件写入打印设备对应的端口,以供打印设备读取和打印。
打印池是由一组打印机组成的一个逻辑打印机,它通过打印服务的多个端口连接到多台打印机(也即打印设备)。处于空闲状态的打印机便可以接收发送到逻辑打印机的下一份文档。启动打印机池相当于把许多打印机放在一起集合起来形成一个打印池,需要打印的时候打印池会把打印任务分配给打印池中空闲的打印机。它会自动分配,而不需要用户在许多打印机中去找空闲的打印机来打印。每一台打印机都有自己的任务队列和处理任务队列的线程。当打印任务开始进行时,这些打印任务便被保存在打印队列内,这个打印队列保存了打印缓存文件,如果打印机因意外暂停(如打印机未连接)而未完成打印任务、或系统在提交打印机任务时意外死机和重启,则该打印任务将列入打印队列,并且存入文件的打印池,备份。
步骤S6、执行结束文档打印功能。
目标动态链接库的第一功能函数A6(Gdi32. EndDoc)在被目标打印程序调用的情况下,会向第二功能函数B6(hotpot. EndDoc)发送对应的第六调用请求中包含的打印任务完成信息。本申请实施例的第二功能函数B6在接收到打印任务完成信息后,会结束打印任务。
综上,本申请实施例的Linux系统的打印处理方法,目标打印驱动程序在打印处理过程中,对目标文档中待处理图像的尺寸与打印区域的尺寸进行比较,并在该比较结果为大于的情况下,利用差值方法,对该待处理图像进行缩小处理,以得到与该打印区域的尺寸相适配的目标图像;进一步,该目标打印驱动程序将该目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据。
由于本申请实施例基于待处理图像的缩小处理,使缩小处理后的目标图像的尺寸与打印区域的尺寸相适配,故本申请实施例能够将待处理图像包含的全部内容控制在打印区域内。在此基础上,本申请实施例能够提高Linux系统下的打印内容的完整性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例中各方法步骤的指令(instructions)。
本申请实施例提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得电子设备执行如上述实施例中一个或多个所述的方法。本申请实施例中,所述电子设备包括终端设备、服务器(集群)等各类型的设备。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的装置,该装置可包括:终端设备、服务器(集群)等电子设备。图6示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置1100 。
对于一个实施例,图6示出了示例性装置1300,该装置具有一个或多个处理器1302、被耦合到(一个或多个)处理器1302中的至少一个的控制模块(芯片组)1304、被耦合到控制模块1304的存储器1306、被耦合到控制模块1304的非易失性存储器(NVM)/存储设备1308、被耦合到控制模块1304的一个或多个输入/输出设备1310,以及被耦合到控制模块1304的网络接口1312。
处理器1302可包括一个或多个单核或多核处理器,处理器1302可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,装置1300 能够作为本申请实施例中所述终端设备、服务器(集群)等设备。
在一些实施例中,装置1300 可包括具有指令1314的一个或多个计算机可读介质(例如,存储器1306或NVM/ 存储设备1308) 以及与该一个或多个计算机可读介质相合并被配置为执行指令1314以实现模块从而执行本公开中所述的动作的一个或多个处理器1302。
对于一个实施例,控制模块1304可包括任意适当的接口控制器,以向(一个或多个)处理器1302中的至少一个和/或与控制模块1304通信的任意适当的设备或组件提供任意适当的接口。
控制模块1304可包括存储器控制器模块,以向存储器1306提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
存储器1306可被用于例如为装置1300加载和存储数据和/或指令1314。对于一个实施例,存储器1306可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,存储器1306可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM) 。
对于一个实施例,控制模块1304可包括一个或多个输入/输出控制器,以向NVM/存储设备1308及(一个或多个)输入/输出设备1310 提供接口。
例如,NVM/存储设备1308可被用于存储数据和/或指令1314。NVM/存储设备1308可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD) 、一个或多个光盘(CD) 驱动器和/或一个或多个数字通用光盘(DVD) 驱动器)。
NVM/存储设备1308可包括在物理上作为装置1300被安装在其上的设备的一部分的存储资源,或者其可被该设备访问可不必作为该设备的一部分。例如, NVM/存储设备1308可通过网络经由(一个或多个)输入/输出设备1310 进行访问。
(一个或多个)输入/输出设备1310 可为装置1300 提供接口以与任意其他适当的设备通信,输入/输出设备1310可以包括通信组件、音频组件、传感器组件等。网络接口1312可为装置1300 提供接口以通过一个或多个网络通信,装置1300 可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G等,或它们的组合进行无线通信。
对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器(例如,存储器控制器模块) 的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP) 。对于一个实施例, (一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例, (一个或多个)处理器1302中的至少一个可与控制模块1304的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,装置1300可以但不限于是:服务器、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等终端设备。在各个实施例中,装置1300 可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置1300包括一个或多个摄像机、键盘、液晶显示器(LCD) 屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC) 和扬声器。
其中,装置中可采用主控芯片作为处理器或控制模块,传感器数据、位置信息等存储到存储器或NVM/存储设备中,传感器组可作为输入/输出设备,通信接口可包括网络接口。
对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种Linux系统的打印处理方法和系统、一种电子设备和一种机器可读介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种Linux系统的打印处理方法,其特征在于,所述Linux系统上运行有兼容层软件,所述兼容层软件用于运行与Windows系统相匹配的目标打印程序、目标动态链接库和目标打印驱动程序,所述方法包括:
Linux打印服务接收打印请求,并向所述兼容层软件发送所述打印请求对应的打印信息;所述打印信息包括:目标文档;
所述兼容层软件在接收到所述打印信息后,向所述目标打印程序发送所述打印信息,以使所述目标打印程序在接收到所述打印信息后,调用与Windows系统相匹配的目标动态链接库,进而使所述目标动态链接库调用所述目标打印驱动程序;目标打印程序调用目标动态链接库中的第一功能函数;所述第一功能函数在注册表中查找打印设备对应的目标打印驱动程序,并确定目标打印驱动程序对应的第二功能函数;第一功能函数向第二功能函数传递对应的工作参数;
所述目标打印驱动程序根据所述打印信息,创建打印设备对应的设备上下文,并对所述目标文档中待处理图像的尺寸与打印设备的打印区域的尺寸进行比较,以得到对应的比较结果;
所述目标打印驱动程序在所述比较结果为大于的情况下,利用插值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;所述目标图像的尺寸与所述打印区域的尺寸相适配,包括:目标图像的宽度方向尺寸不大于打印区域的宽度方向尺寸,以及,目标图像的高度方向尺寸不大于打印区域的高度方向尺寸;
所述目标打印驱动程序将所述目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;所述打印设备的打印区域与所述设备上下文的可绘制区域相匹配;
所述目标打印驱动程序向所述Linux打印服务发送所述打印指令数据。
2.根据权利要求1所述的方法,其特征在于,所述利用插值方法,对所述待处理图像进行缩小处理,包括:
在所述待处理图像中确定出目标图像中的第二像素点对应的四个第一像素点;
利用双线性插值方法,根据所述待处理图像中四个第一像素点的像素值,确定所述目标图像中的第二像素点的像素值。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述目标打印驱动程序在所述比较结果符合预设小于条件的情况下,利用插值方法,对所述待处理图像进行放大处理,以得到与所述打印区域的尺寸相适配的目标图像。
4.根据权利要求1所述的方法,其特征在于,所述打印信息还包括:打印纸张尺寸;所述方法还包括:
所述目标打印驱动程序根据所述打印纸张尺寸和打印设备的分辨率信息,确定所述打印区域的尺寸。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述兼容层软件在接收到所述打印信息后,加载所述目标打印驱动程序,并对所述目标打印驱动程序进行初始化,以得到所述目标打印驱动程序对应的功能列表;
所述功能列表包括:
创建打印设备对应的设备上下文功能;
启动文档功能;
启动文档页功能;
图像绘制功能;
结束文档页打印功能;以及
结束文档打印功能;
其中,所述图像绘制功能包括:对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,以得到对应的比较结果;所述目标打印驱动程序在所述比较结果为大于的情况下,利用插值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;将所述目标图像绘制到设备上下文中,以得到对应的绘制图像。
6.根据权利要求1至5中任一所述的方法,其特征在于,所述目标动态链接库包括第一功能函数,目标打印驱动程序包括:第二功能函数,则所述目标动态链接库与所述目标打印驱动程序之间的交互过程包括:
所述第二功能函数根据所述第一功能函数发送的打印信息和打印设备相关信息,创建打印设备对应的设备上下文,并向所述第一功能函数返回设备上下文;
所述第二功能函数根据所述第一功能函数发送的打印信息和目标打印程序的要求,创建所述打印信息对应的打印任务,设置所述打印任务对应的打印参数,并向所述第一功能函数返回所述打印参数;
所述第二功能函数根据所述第一功能函数发送的打印信息和打印参数,针对目标文档包含的任一页面,确定对应的页面打印信息,并向所述第一功能函数返回所述页面打印信息;
所述第二功能函数根据所述第一功能函数发送的页面打印信息,对所述目标文档中待处理图像的尺寸与所述打印区域的尺寸进行比较,以得到对应的比较结果;在所述比较结果为大于的情况下,利用插值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像;将所述目标图像绘制到设备上下文中,以得到页面对应的绘制图像,并向所述第一功能函数返回所述页面对应的绘制图像;
所述第二功能函数根据所述第一功能函数发送的绘制图像,将页面对应的绘制图像转换成打印设备能够识别的打印指令数据,并将这些打印指令数据写到打印池的打印缓冲文件中存储;
所述第二功能函数在接收到所述第一功能函数发送的打印任务完成信息后,结束打印任务。
7.一种Linux系统的打印处理系统,其特征在于,所述系统包括:Linux打印服务、兼容层软件、目标动态链接库和目标打印驱动程序;
其中,所述Linux打印服务与至少一个目标应用和至少一个打印设备相连接,用于接收目标应用发送的打印请求,并向所述兼容层软件发送所述打印请求对应的打印信息;所述打印信息包括:目标文档;
所述兼容层软件用于运行与Windows系统相匹配的目标打印程序、目标动态链接库和目标打印驱动程序;并且,在接收到所述打印信息后,向所述目标打印程序发送所述打印信息,以使所述目标打印程序在接收到所述打印信息后,调用与Windows系统相匹配的目标动态链接库,进而使所述目标动态链接库调用所述目标打印驱动程序;目标打印程序调用目标动态链接库中的第一功能函数;所述第一功能函数在注册表中查找打印设备对应的目标打印驱动程序,并确定目标打印驱动程序对应的第二功能函数;第一功能函数向第二功能函数传递对应的工作参数;
所述目标打印驱动程序用于根据所述打印信息,创建打印设备对应的设备上下文,并对所述目标文档中待处理图像的尺寸与打印设备的打印区域的尺寸进行比较,以得到对应的比较结果;在所述比较结果为大于的情况下,利用插值方法,对所述待处理图像进行缩小处理,以得到与所述打印区域的尺寸相适配的目标图像,并将所述目标图像绘制到设备上下文中,以得到打印设备能够识别的打印指令数据;以及,向所述Linux打印服务发送所述打印指令数据;所述目标图像的尺寸与所述打印区域的尺寸相适配,包括:目标图像的宽度方向尺寸不大于打印区域的宽度方向尺寸,以及,目标图像的高度方向尺寸不大于打印区域的高度方向尺寸;所述打印设备的打印区域与所述设备上下文的可绘制区域相匹配。
8.根据权利要求7所述的系统,其特征在于,所述目标打印驱动程序还用于在所述比较结果符合预设小于条件的情况下,利用插值方法,对所述待处理图像进行放大处理,以得到与所述打印区域的尺寸相适配的目标图像。
9.一种电子设备,其特征在于,包括:处理器;和
存储器,其上存储有可执行代码,当所述可执行代码被执行时,使得所述处理器执行如权利要求1-6中任一项所述的方法。
10.一种机器可读介质,其上存储有可执行代码,当所述可执行代码被执行时,使得处理器执行如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311445179.7A CN117170600B (zh) | 2023-11-02 | 2023-11-02 | Linux系统的打印处理方法、系统、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311445179.7A CN117170600B (zh) | 2023-11-02 | 2023-11-02 | Linux系统的打印处理方法、系统、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117170600A CN117170600A (zh) | 2023-12-05 |
CN117170600B true CN117170600B (zh) | 2024-02-23 |
Family
ID=88943549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311445179.7A Active CN117170600B (zh) | 2023-11-02 | 2023-11-02 | Linux系统的打印处理方法、系统、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117170600B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607879A (zh) * | 2015-12-21 | 2016-05-25 | 珠海奔图电子有限公司 | 一种适用于预打印纸的画像调整控制方法及装置 |
CN108563434A (zh) * | 2018-04-04 | 2018-09-21 | 重庆玺兴科技有限公司 | 一种打印驱动开发方法 |
CN109989585A (zh) * | 2019-03-18 | 2019-07-09 | 东南大学 | 一种3d打印机打印精度的实时反馈控制方法 |
CN110223232A (zh) * | 2019-06-06 | 2019-09-10 | 电子科技大学 | 一种基于双线性插值算法的视频图像放大方法 |
CN114170613A (zh) * | 2021-12-07 | 2022-03-11 | 航天信息股份有限公司 | 图像检测方法、装置、电子设备及计算机可读存储介质 |
CN114564158A (zh) * | 2022-04-24 | 2022-05-31 | 北京圣博润高新技术股份有限公司 | Linux系统下控制文档打印的方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7467217B2 (ja) * | 2020-04-27 | 2024-04-15 | キヤノン株式会社 | プログラム及び情報処理装置の制御方法 |
-
2023
- 2023-11-02 CN CN202311445179.7A patent/CN117170600B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607879A (zh) * | 2015-12-21 | 2016-05-25 | 珠海奔图电子有限公司 | 一种适用于预打印纸的画像调整控制方法及装置 |
CN108563434A (zh) * | 2018-04-04 | 2018-09-21 | 重庆玺兴科技有限公司 | 一种打印驱动开发方法 |
CN109989585A (zh) * | 2019-03-18 | 2019-07-09 | 东南大学 | 一种3d打印机打印精度的实时反馈控制方法 |
CN110223232A (zh) * | 2019-06-06 | 2019-09-10 | 电子科技大学 | 一种基于双线性插值算法的视频图像放大方法 |
CN114170613A (zh) * | 2021-12-07 | 2022-03-11 | 航天信息股份有限公司 | 图像检测方法、装置、电子设备及计算机可读存储介质 |
CN114564158A (zh) * | 2022-04-24 | 2022-05-31 | 北京圣博润高新技术股份有限公司 | Linux系统下控制文档打印的方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117170600A (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6327050B1 (en) | Printing method and apparatus having multiple raster image processors | |
US8502995B2 (en) | Printing method to load filter dynamically and recordable medium with program to execute the printing method and host apparatus | |
US9998616B2 (en) | Image forming apparatus, non-transitory computer readable recording medium, and information processing system | |
CN117170600B (zh) | Linux系统的打印处理方法、系统、设备和介质 | |
US10169688B2 (en) | Method of enhancing quality of image object included in compound document and apparatus for performing the method | |
JP5635754B2 (ja) | 印刷ジョブに関してプリプレス作業を行うシステム | |
US20100328715A1 (en) | Image processing apparatus, and control method thereof and program | |
US10133521B2 (en) | Server device, recording medium, and information processing system | |
US8582153B2 (en) | Image forming apparatus and method | |
US10089561B2 (en) | Generating a raster image region by rendering in parallel plural regions of smaller height and segmenting the generated raster image region into plural regions of smaller width | |
US9176691B2 (en) | Output control device and output control method | |
US8125680B2 (en) | Image processing apparatus and control method thereof | |
JP3797371B2 (ja) | 描画命令のフックを利用した画像の転送 | |
US10942693B2 (en) | Information processing apparatus, method of controlling the same, and storage medium | |
US20170300789A1 (en) | Image processing apparatus, image processing method, and non-transitory computer-readable medium | |
US20190114120A1 (en) | Data communication method and information processing apparatus | |
JP2007152898A (ja) | 印刷処理装置 | |
US20080307296A1 (en) | System and method for pre-rendering of combined document pages | |
US11567715B1 (en) | Information forming apparatus, non-transitory computer readable medium and an image forming method for performing printing by using registered print information received from at least one different image forming apparatus | |
US10939014B2 (en) | Image forming apparatus that performs a plurality of functions using shared and exclusive storage areas | |
US20200401071A1 (en) | Image forming apparatus, control method therefor, and program | |
AU753442B2 (en) | Printing method and apparatus having multiple raster image processors | |
JP2017050851A (ja) | 乗算済みデータにおける色変換を支援する方法 | |
US20190310810A1 (en) | Image processing apparatus and image processing method | |
JP2006172043A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |