APP下载

基于局域网的多台打印机打印任务分流工具

2019-12-26赵海龙

天津科技 2019年12期
关键词:份数线程打印机

赵海龙

(红天智能科技(天津)有限公司 天津 300300)

0 引 言

目前,国内很多打印店都遇到过这样的问题,用户打印一本宣传手册,需要 500份,通常情况下的操作方式就是打开文件,输入份数,打印。大多数打印店用的是中速打印机,速度一般不超过 120张/min。我们假设宣传手册是100页,那么500份文档用一台打印机要打7h左右,即使是10页的宣传手册,时间也要接近 1h。通常,打印机长时间连续工作很容易损坏。由于打印任务的发送过程属于单线程,所以任务发送过程中整个软件界面是不能进行其他操作的,手动分配发送打印任务到不同的打印机则耗时费力。

1 Windows打印系统

1.1 打印假脱机队列(PrinterSpooler)

打印机不同于硬盘或显卡这类硬件,也不同于键盘鼠标等外部设备,它们都属于即时响应的设备,而操作系统打印一个文档需要的时间不确定,快的几秒,慢的需要几分钟甚至更长时间,操作系统不可能一直等到打印任务处理完。因此,操作系统提供了Spooler服务来对打印机的任务进行管理。

1.2 Windows打印任务流程

为了实现我们的目标,对 Windows打印流程进行系统分析是非常必要的。图1展示了应用程序发起打印请求开始,到假脱机文件的形成,最后完成打印的完整过程。

2 基于C#语言和PDFVIEW4NET工具的设计开发及验证

2.1 C#语言简介

C#是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core上的高级程序设计语言,是一种编译解释型语言,其原始代码被编译成能够被.NET框架识别的编码,并运行在.NET平台上。所以,C#是专门为.NET平台开发的语言,与.NET平台完美结合。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。

图1 Windows打印流程图Fig.1 Windows printing flow sheet

2.2 PDFVIEW4NET简介

PDFVIEW4NET是由罗马尼亚的 O2 Solutions公司开发的一个.NET工具包,用于在.NET应用程序中添加 PDF呈现和打印支持。可将标准的文件转换成 PDF,再将 PDF发送至打印机。它用于 Windows窗体、WPF和Silverlight的PDF查看器控件,以及用于从任何.NET应用程序呈现和打印 PDF文件的.NET库。PDF查看器控件具有对 PDF文件的注释、书签导航、添加和删除文件附件以及其他功能的支持。该工具包包含自己的 PDF呈现引擎,它不依赖任何其他软件来呈现和打印PDF文件。

2.3 软件架构及实现

软件采用C#编程语言,利用PDFVIEW4NET工具包实现,具体流程如图2所示。

2.3.1 枚举打印机

首先引用 System.Drawing.Printing命名空间,然后通过 foreach(String printerName in PrinterSettings.InstalledPrinters){}遍历的形式,其中每一个printerName都是一台已安装的打印机。再根据每台打印机的状态,枚举出所有空闲的打印机。

2.3.2 打印参数的设置

打印参数包括纸张类型(如 A3、A4、B5)、打印颜色、单双面、份数、打印机名称等,信息设置完成后,存储到一个实体类当中,作为线程的参数,分配到每个任务上。

图2 分流软件流程图Fig.2 Flow sheet of shunting software

2.3.3 打印任务份数分配规则

打印任务数量采取平均分配原则,能够整除的不需要考虑,对于不能整除的,具体的分配方式是:先计算份数除以打印机台数的商和余数,分配的数量就是余数个(商+1)和(打印机数量-余数)个商,例如,打印份数为 100份,分配打印机数量是 6台,100÷6=16……4,即每台打印机分配的份数是 17、17、17、17、16、16;如果分配的打印机数量是 7 台,100÷7=14……2,即每台打印机分配的份数是 15、15、14、14、14、14、14。

2.3.4 将任务发送到打印机

遍历打印机列表,创建 PrinterSettings实例settings,将打印参数(纸张类型、打印颜色、单双面、份数、打印机名称)赋值给 settings,利用带参数的线程,Thread(ParameterizedThreadStart)初始化 Thread类的新实例,指定允许对象在线程启动时传递给线程的委托。在每个线程里面执行Print(settings),即可完成分流打印。

2.4 打印工厂实测验证

在天津某大型打印连锁店打印工厂现场实测。

测试条件:单页文档,打印 800份,测试结果如表1所示。

表1 单页文档测试结果Tab.1 Single-page document test results

测试条件:10页文档,打印 800份,测试结果如表2所示。

表2 10页文档测试结果Tab.2 10 pages document test results

3 结 论

在进行了系统测试之后,可以明显看出,打印任务分流工具的优势在于,打印机越多,打印效率越高,打印机损耗相对越小。该工具能够降低损耗,提高生产效率,实现了设计初衷。

猜你喜欢

份数线程打印机
实时操作系统mbedOS 互斥量调度机制剖析
基于C#线程实验探究
新奇有趣的打印机
如何利用题组训练提高分数“量”与“率”的区分度
对提单及保单出具份数的思考
基于国产化环境的线程池模型研究与实现
“份数法”的妙用
另类3D打印机
FDM型混色3D打印机的设计
2013年《共产党员》和《党建文汇》《党支部书记》邮寄凭证