要获得后台真实打印的状态变化以及最终是否打印成功结束,需要采用如下捕获语句:
LODOP.SET_PRINT_MODE("CATCH_PRINT_STATUS",true);
执行该语句之后,PRINT指令不再返回那个所谓“打印成功”,而是该任务的JOB代码(打印机序号和JOB序号组成)。
有了该JOB代码,可以用GET_VALUE("PRINT_STATUS_XXX","JOB代码值")语句获得打印状态信息及最终结果。
这与样例28方法不同的是,即便打印任务消失之后仍能查询,也可以循环查询,等待某个状态出现。
下面演示:
1、先点执行打印获得该打印的JOB代码:
现在也可以另外执行一个打印(产生新JOB代码:) 并等待其打印成功状态出现:
等待过程中可以用如下语句对该打印机进行暂停打印、恢复打印及清理打印任务三项控制:
LODOP.SET_PRINT_MODE("CONTROL_PRINTER:打印机名称或序号","PAUSE");
LODOP.SET_PRINT_MODE("CONTROL_PRINTER:打印机名称或序号","RESUME");
LODOP.SET_PRINT_MODE("CONTROL_PRINTER:打印机名称或序号","PURGE");
先试试暂停打印,
暂停后恢复打印,
或清理其所有打印任务(清理过程稍等待)。
打印状态代码含义:
状态代码是一个枚举组合值,有如下信息所代表的数字合计而成。1-已暂停 2-错误 4-正删除 8-进入队列 |
16-正在打印 32-脱机 64-缺纸 128-打印结束 |
256-已删除 512-堵塞 1024-用户介入 2048-正在重新启动 |
13、前面的已经打印成功是通过“状态码包含128”且“JOB已不在队列”来判断的,但有些打印机输出完毕状态码不变成128,
而一直等于20(“正在打印16”和“正在删除4”之和),此时页面程序需要针对这种打印机进行附加判断。事实上多数情况下
判断“JOB不在队列”就足可认定已经打印成功!
下面演示逐个打印,也就是前面成功或删除了才继续打印下一个(演示中选“取消”就中断循环):