打印助手-打印暂停/开始问题原因调研记录

2015.12.22 周二

之前的一篇文档里提到过CUPS IPP有两个操作码是IPP_SUSPEND_CURRENT_JOBIPP_RESUME_JOB。按照源码的注释和官方文档的描述应该是我们要找的打印暂停/继续功能,之前看到错误码是IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,然后我今天从源码里看到这么一串代码:

    ......

    case HTTP_STATUS_BAD_REQUEST :
_cupsSetError(IPP_STATUS_ERROR_BAD_REQUEST, httpStatus(status), 0);
break;

    case HTTP_STATUS_REQUEST_TOO_LARGE :
_cupsSetError(IPP_STATUS_ERROR_REQUEST_VALUE, httpStatus(status), 0);
break;

    case HTTP_STATUS_NOT_IMPLEMENTED :
_cupsSetError(IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED, httpStatus(status), 0);
break;

    case HTTP_STATUS_NOT_SUPPORTED :
_cupsSetError(IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED, httpStatus(status), 0);
break;

    ......

然后代码里HTTP_STATUS_NOT_IMPLEMENTED的描述是这样的:

HTTP_STATUS_NOT_IMPLEMENTED, /* Feature not implemented */

据此我严重怀疑打印任务的暂停/恢复在当前CUPS版本(1.7.2)里还没有实现,
下面我准备上网找找CUPS的后面的版本有没有提到这个功能的,看看能不能找到突破口。

2015.12.23周三

基于昨天邮件中提到的当前版本的CUPS可能没有实现打印任务暂停/开始的功能,我又下载了最新版本(2.1.2)的CUPS源码,里面包含了该版本以及历史版本的changelog,我看了这些changelogs,它们也没有提到关于打印任务暂停/开始或IPP_SUSPEND_CURRENT_JOB/IPP_RESUME_JOB的内容。
但是我在CUPS官网的buglist里面发现这样一个bug(https://www.cups.org/str.php?L1482+P-1+S0+C0+I0+E0+Qresume):bug的提出者是一个CUPS的用户,他指出使用CUPS来暂停和恢复任务时的表现和Windows不一样,暂停后恢复时又重新开始打印( printed from the beginning including the pages that are already printed),开发人员给他的回复是There is absolutely nothing we can do about this。- -# 他说到由于页面计数器的不可靠性,我们无法知道打印机已经打印的确切页数,windows能够做到是因为windows上应用程序和打印驱动及打印机的高度耦合。
这个bug是2006年提出的,到现在状态还是Unresolved,开发人员的说法让我感觉这个问题可能就是CUPS的一个缺陷,但不是代码方面的缺陷,我隐隐觉得这个问题目前解决不了了,我们最后决定将右下角打印暂停/开始功能改为打印机的停止/启动功能,将暂停/开始图标改掉,这样至少不会对用户造成歧义。

====20160114 更新
CUPS开发人员对我在官网buglist中的提问进行了回复,地址在这里,他的回答证实了以上想法是正确的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值