我们正在尝试组装一个免费的软件堆栈来获取详细的打印作业统计信息,类似于剪纸 打印记录器适用于原始打印队列。我们一直在测试Apple 通用 Unix 打印系统(杯)Debian GNU不是Unix(GNU)/Linux和皮科塔 杯子用 T 恤(Tea4Cups)。
在杯子里,惠普(生命值)打印机控制语言(PCL)打印作业文件包括 HP打印机作业语言(PJL)标题包含作业信息,例如份数、双面或单面、彩色或黑白等。HP 甚至在同一文档中同时定义了 PCL 和 PJL。
在微软(多发性硬化症)视窗,每个打印作业都排队为两个文件:一个线轴(SPL)具有打印文件本身的文件,可以使用任何语言:Adobe 后记聚苯乙烯 (PS)、惠普 PCL、爱普生 打印机标准代码(Esc/P),随便;以及阴影(SHD)包含 PJL 信息的文件。
据我们所知,Cups 中的 Postscript 打印作业不包含任何与 PJL 或 SHD 等效的内容,无论是在 PS 文件本身中还是在单独的文件中。
那么,是否有可能在Cups中获取此类打印作业信息?
答案1
CUPS 还(临时)将打印作业存储在(至少)两个不同的文件中。对于由单文档作业组成的给定作业 ID 123456,这些将是:
/var/spool/cups/d123456-001
/var/spool/cups/c123456
对于由多个文档组成的给定职位 ID 123457,其内容如下:
/var/spool/cups/d123457-001
/var/spool/cups/d123457-002
/var/spool/cups/d123457-003
/var/spool/cups/c123457
这里,该d....
文件代表包含作业文档的实际数据文件,与 CUPS 客户端提交的完全相同(并且在 CUPS 过滤链将作业文件转换为目标打印机所需的格式之前)。
该c....
文件代表了工作控制文件包含有关该作业的所有相关元信息(也许最重要的是:用户想要的打印选项,例如“双面打印、装订、使用纸盘 3 中的纸张”)。
今天早些时候,我遇到的问题是如何剖析该c....
文件并从中提取所有细节,因为它不是明文。strings
对其进行分析后,我发现了部分细节,但不是全部。
我开始在 StackExchange 上搜索几乎所有内容以寻找答案...这时我注意到了此相关问题。然后我使用搜索引擎查找更多信息,但仍然没有有用的结果。
最后,我甚至自己在 StackOverflow 上问了一个关于此问题的问题:
然后我继续在 Github 上搜索 CUPS 源代码,寻找线索。几个小时后,我找到了答案:
- 使用可以从 CUPS 源构建的实用程序(但它不会作为默认 Makefile 目标构建,因此不会在任何我所知道的 Linux 发行版也没有在 macOS 上):它被命名为
testipp
。
请参阅我对上述 StackOverflow 问题的回答:
不幸的是,这些有用的工具没有被任何发行版打包!如果你认识发行版打包人员,请向他们指出这个问题并请他/她查看一下!