具体实施方式
本发明实施例打印初始化处理模块对第一缓冲区的数据段进行打印初始化处理后,通知打印处理模块组;打印初始化处理模块在打印处理模块组将第一缓冲区的数据段发送给打印设备之前,对第二缓冲区的数据段进行打印初始化处理,并在第二缓冲区的数据段打印初始化处理后,通知打印处理模块组。由于每个打印处理模块可以并行处理每段打印数据,从而提高处理打印任务的速度,避免出现打印设备等待打印软件处理打印任务的情况,提高打印速度。
下面结合说明书附图对本发明实施例作进一步详细描述。
如图1所示,本发明实施例处理打印任务的装置包括:打印初始化处理模块10和打印处理模块组20。
打印初始化处理模块10,用于对第一缓冲区的数据段进行打印初始化处理后,通知打印处理模块组20,在打印处理模块组20将第一缓冲区的数据段发送给打印设备之前,对第二缓冲区的数据段进行打印初始化处理,并在第二缓冲区的数据段打印初始化处理后,通知打印处理模块组20。
打印处理模块组20,用于对打印初始化处理模块10通知的缓冲区中的数据段进行处理,并将处理后的数据段发送给打印设备。
其中,打印处理模块组20是由多个打印处理模块组成的。
根据对打印任务处理过程不同,打印初始化处理模块10对数据的处理过程也不相同;相应的,打印处理模块组20中的模块数量也不相同。
比如:如果对打印任务的处理需要经过栅格化,挂网,校色,驱动处理,则打印初始化处理模块10是对数据段进行栅格化处理,打印处理模块组20中包括挂网模块,校色模块和驱动模块。
如果对打印任务的处理需要经过挂网,校色,驱动处理,则打印初始化处理模块10是对数据段进行挂网处理,打印处理模块组20中包括校色模块和驱动模块。
其中,本发明实施例处理打印任务的装置还可以进一步包括:控制模块30。
控制模块30,用于将待打印数据平均分成多个数据段,将多个数据段按打印先后顺序分别置于多个缓冲区中。
具体分成多少个数据段以及缓冲区的数量可以根据需要进行设定;较佳的,设置的缓冲区的数量大于处理模块的数量(即打印初始化处理模块和打印处理模块组中的所有模块)。
数据段的大小可以根据作业的宽,高参数和打印分辨率和色面数计算出来。具体是作业的宽(像素)*当前段高(像素)*色面数/每字节的像素数,当前段高是缓冲区大小除以作业的宽。当然,数据段的大小也可以不按照上面的方式设定,而是根据需要进行设定。
对于缓冲区的大小,只要保证缓冲区的容量不小于数据段的大小就可以。
当然,根据需要也可以不限定缓冲区的数量,比如有多少数据段就申请多少缓冲区,但是如果需要打印的数据很大,数据段很多,则会占用大量的缓冲区,增加了系统的负担。
在具体实施过程中,控制模块30在一个打印任务生成后,可以为每一个处理模块申请一个线程。
控制模块30在将一个数据段置于一个缓冲区中后,会将该缓冲区的状态从空闲状态转换为使用状态,以及生成针对该数据段的打印参数,比如作业的宽,高,当前数据段的高,打印分辨率和色面数,作业状态,本数据段是否是最后一段等参数,并将该打印参数和该缓冲区的指针通知打印初始化处理模块10。
具体的,控制模块30可以通过堆栈方式将该打印参数和该缓冲区的指针通知打印初始化处理模块10,由于每个数据段置于一个缓冲区中后都会有一套打印参数和指针,所以堆栈中会累积多套打印参数和指针,打印初始化处理模块10会按照存储到堆栈的时间先后顺序进行处理,也就是说,打印初始化处理模块10会处理先存储到堆栈中的打印参数和指针。
相应的,打印初始化处理模块10会根据打印参数,处理指针对应的缓冲区中的数据段。
在处理完成后,打印初始化处理模块10同样会将打印参数和指针通过堆栈通知打印处理模块组20中的第一个打印处理模块;相应的,第一个打印处理模块根据打印参数,处理指针对应的缓冲区中的数据段后,将打印参数和指针通过堆栈通知给打印处理模块组20中的下一个打印处理模块,依此类推,直到打印处理模块组20中的最后一个打印处理模块根据打印参数,将指针对应的缓冲区中的数据段发送给打印设备后,将该缓冲区的状态从使用状态转换为空闲状态。
由于每个处理模块都会对应一个堆栈,每个处理模块在处理完一个缓冲区中的数据段,并通知下一个处理模块后,会继续从堆栈中选择没有处理的指针对应的缓冲区进行处理,从而达到了多个处理模块并行处理的效果,提高了处理打印任务的速度。
需要说明的是,本发明实施例并不局限于堆栈的通知方式,其他能够通知打印参数和指针的方式都适用本发明实施例。
如果数据段的数量大于缓冲区的数量,控制模块30按打印先后顺序将前N个数据段置于N个缓冲区中,其中N是缓冲区的数量;
控制模块30在确定有空闲状态的缓冲区(即缓冲区的状态从使用状态转换为空闲状态)时,按打印先后顺序将没有缓存的数据段置于缓冲区中。
在具体实施过程中,打印初始化处理模块10和打印处理模块组20根据打印参数确定打印参数对应的数据段是最后一个数据段,并对该数据段完成处理后,确定打印任务结束。
具体的,控制模块30将最后一个数据段置于缓冲区后,可以设置作业结束标记;控制模块30激发一个结束事件,每个处理模块确定打印任务结束,且见到结束事件后,设置自身处理完毕;控制模块在每个处理模块都设置处理完毕后,释放缓冲区,关闭各线程,确定打印作业结束。
如图2所示,本发明实施例第一种处理打印任务的方法包括下列步骤:
步骤201、打印初始化处理模块对第一缓冲区的数据段进行打印初始化处理后,通知打印处理模块组。
步骤202、打印初始化处理模块在打印处理模块组将第一缓冲区的数据段发送给打印设备之前,对第二缓冲区的数据段进行打印初始化处理,并在第二缓冲区的数据段打印初始化处理后,通知打印处理模块组。
其中,根据对打印任务处理过程不同,打印初始化处理模块对数据的处理过程也不相同;相应的,打印处理模块组中的模块数量也不相同。
比如:如果对打印任务的处理需要经过栅格化,挂网,校色,驱动处理,则打印初始化处理模块是对数据段进行栅格化处理,打印处理模块组中包括挂网模块,校色模块和驱动模块。
如果对打印任务的处理需要经过挂网,校色,驱动处理,则打印初始化处理模块是对数据段进行挂网处理,打印处理模块组中包括校色模块和驱动模块。
其中,步骤201之前还可以进一步包括:
步骤200、控制模块将待打印数据平均分成多个数据段,将多个数据段按打印先后顺序分别置于多个缓冲区中。
具体分成多少个数据段以及缓冲区的数量可以根据需要进行设定;较佳的,设置的缓冲区的数量大于处理模块的数量(即打印初始化处理模块和打印处理模块组中的所有模块)。
数据段的大小可以根据作业的宽,高参数和打印分辨率和色面数计算出来。具体是作业的宽(像素)*当前段高(像素)*色面数/每字节的像素数,当前段高是缓冲区大小除以作业的宽。当然,数据段的大小也可以不按照上面的方式设定,而是根据需要进行设定。
对于缓冲区的大小,只要保证缓冲区的容量不小于数据段的大小就可以。
当然,根据需要也可以不限定缓冲区的数量,有多少数据段就申请多少缓冲区,但是如果需要打印的数据很大,数据段很多,则会占用大量的缓冲区,增加了系统的负担。
在具体实施过程中,控制模块可以在一个打印任务生成后,为每一个处理模块,向操作系统申请一个线程。
控制模块在将一个数据段置于一个缓冲区中后,会将该缓冲区的状态从空闲状态转换为使用状态,以及生成针对该数据段的打印参数,并将该打印参数和该缓冲区的指针通知打印初始化处理模块。
具体的,控制模块可以通过堆栈方式将该打印参数和该缓冲区的指针通知打印初始化处理模块,由于每个数据段置于一个缓冲区中后都会有一套打印参数和指针,所以堆栈中会累积多套打印参数和指针,打印初始化处理模块会按照存储到堆栈的时间先后顺序进行处理,也就是说,打印初始化处理模块会处理先存储到堆栈中的打印参数和指针。
相应的,打印初始化处理模块会根据打印参数,处理指针对应的缓冲区中的数据段。
在处理完成后,打印初始化处理模块同样会将打印参数和指针通过堆栈通知打印处理模块组中的第一个打印处理模块;相应的,第一个打印处理模块根据打印参数,处理指针对应的缓冲区中的数据段后,将打印参数和指针通过堆栈通知给打印处理模块组中的下一个打印处理模块,依此类推,直到打印处理模块组中的最后一个打印处理模块根据打印参数,将指针对应的缓冲区中的数据段发送给打印设备后,将该缓冲区的状态从使用状态转换为空闲状态。
由于每个处理模块都会对应一个堆栈,每个处理模块在处理完一个缓冲区中的数据段,并通知下一个处理模块后,会继续从堆栈中选择没有处理的指针对应的缓冲区进行处理,从而达到了多个处理模块并行处理的效果,提高了处理打印任务的速度。
需要说明的是,本发明实施例并不局限于堆栈的通知方式,其他能够通知打印参数和指针的方式都适用本发明实施例。
如果数据段的数量大于缓冲区的数量,控制模块按打印先后顺序将前N个数据段置于N个缓冲区中,其中N是缓冲区的数量;
控制模块在确定有空闲状态的缓冲区(即缓冲区的状态从使用状态转换为空闲状态)时,按打印先后顺序将没有缓存的数据段置于缓冲区中。
在具体实施过程中,打印初始化处理模块和打印处理模块组根据打印参数确定打印参数对应的数据段是最后一个数据段,并对该数据段完成处理后,确定打印任务结束。
具体的,控制模块将最后一个数据段置于缓冲区后,可以设置作业结束标记;控制模块激发一个结束事件,每个处理模块确定打印任务结束,且见到结束事件后,设置自身处理完毕;控制模块在每个处理模块都设置处理完毕后,释放缓冲区,关闭各线程,确定打印作业结束。
下面以打印任务处理过程包括挂网、校色和驱动三个过程为例进行详细说明。如图3所示,本发明实施例第二种处理打印任务的方法包括下列步骤:
打印初始化处理模块为挂网处理模块,打印处理模块组中包括校色处理模块和驱动处理模块。
步骤301、控制模块为挂网处理模块、校色处理模块和驱动处理模块分别申请一个线程。
步骤302、控制模块将待打印数据平均分成多个数据段,将多个数据段按打印先后顺序分别置于多个缓冲区中。
其中,控制模块在将一个数据段置于一个缓冲区中后,会将该缓冲区的状态从空闲状态转换为使用状态,以及生成针对该数据段的打印参数,并将该打印参数和该缓冲区的指针存储到挂网处理模块对应的堆栈中。
步骤303、线程启动。
步骤304、挂网处理模块按照存储到堆栈中的时间顺序,从先到后选择一套打印参数和指针,根据打印参数对指针对应的缓冲区中的数据段进行挂网处理,并将该打印参数和该缓冲区的指针存储到校色处理模块对应的堆栈中。
步骤305、挂网处理模块根据打印参数判断对应的数据段是否是最后一个数据段,如果是,则执行步骤310;否则,返回步骤304。
步骤306、校色处理模块按照存储到堆栈中的时间顺序,从先到后选择一套打印参数和指针,根据打印参数对指针对应的缓冲区中的数据段进行校色处理,并将该打印参数和该缓冲区的指针存储到驱动处理模块对应的堆栈中。
步骤307、校色处理模块根据打印参数判断对应的数据段是否是最后一个数据段,如果是,则执行步骤310;否则,返回步骤306。
步骤308、驱动处理模块按照存储到堆栈中的时间顺序,从先到后选择一套打印参数和指针,根据打印参数将指针对应的缓冲区中的数据段进行处理后发送给打印设备,并将该指针对应的缓冲区的状态从使用状态转换为空闲状态。
步骤309、驱动处理模块根据打印参数判断对应的数据段是否是最后一个数据段,如果是,则执行步骤310;否则,返回步骤308。
步骤310、确定打印作业结束。
步骤311、控制模块释放缓冲区,并关闭各线程。
其中,步骤304、306和308是并行处理过程,没有先后顺序。
从上述实施例中可以看出:本发明实施例打印初始化处理模块对第一缓冲区的数据段进行打印初始化处理后,通知打印处理模块组;打印初始化处理模块在打印处理模块组将第一缓冲区的数据段发送给打印设备之前,对第二缓冲区的数据段进行打印初始化处理,并在第二缓冲区的数据段打印初始化处理后,通知打印处理模块组。
由于每个打印处理模块可以并行处理每段打印数据,从而提高处理打印任务的速度,避免出现打印设备等待打印软件处理打印任务的情况,提高打印速度;进一步提高了用户体验。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。