如何通过cups4j获取含完成时间的全部打印作业属性?
获取包含job-completion-time的全量CUPS作业属性(基于cups4j)
可行方案:
- 自定义
IppGetJobsOperation的请求属性
cups4j的getPrintJobs()方法默认未请求job-completion-time属性,这是CUPS IPP协议的默认行为。你可以手动给IppGetJobsOperation添加需要的属性列表,一次性拉取包含完成时间的所有作业数据:
// 构建获取作业的操作实例 IppGetJobsOperation getJobsOp = new IppGetJobsOperation(); // 显式指定需要获取的属性,包含job-completion-time getJobsOp.addAttribute(new IppAttribute("requested-attributes", IppTag.KEYWORD, "job-id", "job-name", "job-state", "job-completion-time")); // 执行请求获取作业列表 List<CupsJob> jobs = getJobsOp.getPrintJobs(cupsClient, printerUri);
这样返回的每个CupsJob对象中,job-completion-time字段就会有有效值。
- 批量获取单作业属性(备选)
如果上述方法不生效,可先通过getPrintJobs()拿到所有作业的job-id,再循环调用getPrintJobAttributes()获取每个作业的完整属性。注意控制请求频率,避免对CUPS服务器造成过大负载。
补充说明:
CUPS的Get-Jobs IPP操作默认返回的属性集合不包含job-completion-time,必须显式声明请求该属性才能获取到,这也是默认getPrintJobs()返回空值的核心原因。
内容的提问来源于stack exchange,提问作者Moses Jebakumar
相关产品推荐
相关产品推荐

