我们正在尝试组装一个免费软件堆栈来获取详细的打印作业统计信息,类似于Papercut Printlogger所做的,用于原始打印队列。我们一直在测试Debian GNU 中的Apple Common Unix 打印系统(Cups)不是 Unix (GNU)/ Linux和Pykota Tee for Cups (Tea4Cups)。
在 Cups 中,惠普(HP)打印机控制语言(PCL) 打印作业文件包括一个 HP打印机作业语言(PJL) 标题,其中包含作业信息,例如份数、双面或单面、彩色或黑白等。HP 甚至在同一文档中同时定义了 PCL 和 PJL。
在Microsoft (MS) Windows中,每个打印作业都作为两个文件排队:一个Spool (SPL) 一个具有打印文件本身的文件,使用任何一种语言:Adobe Postscript (PS)、HP PCL、Epson Standard Code for Printers (Esc/ P),随便什么;以及带有 PJL 信息的Shadow (SHD) 文件。
据我们所知,Cups 中的 Postscript 打印作业不包含任何与 PJL 或 SHD 等效的内容,无论是在 PS 文件本身还是在单独的文件中。
那么,有没有可能在 Cups 中获得这样的打印作业信息呢?
CUPS 还(临时)将打印作业存储在(至少)两个不同的文件中。对于由单文档作业组成的给定作业 ID 123456,这些将是:
对于由多个文档组成的给定作业 ID 123457,这些将是:
在这里,该
d....
文件表示包含作业文档的实际数据文件,与 CUPS 客户端提交的文件完全相同(在用于将作业文件转换为目标打印机所需格式的 CUPS 过滤链之前)。该
c....
文件代表作业控制文件,其中包含有关作业的所有相关元信息(最重要的可能是:用户想要的打印选项,例如“双面,装订,纸盘 3 中的纸张”)。对我来说,今天早些时候的问题是如何剖析
c....
文件并从中提取所有血腥细节,因为它不是明文。与它对抗strings
,揭示了一些,但不是全部。我开始在几乎所有 StackExchange 中搜索答案……这就是我在这里注意到这个相关问题的时候。然后我搜索引擎以获取更多信息,但仍然没有有用的结果。
最后,我什至自己在 StackOverflow 上问了一个问题:
然后我继续在 Github 上搜索 CUPS 源代码以寻找任何线索。几个小时后,我找到了答案:
testipp
.在此处查看我对上述链接的 StackOverflow 问题的回答:
不幸的是,这些有用的工具没有被任何发行版打包!如果您认识发行版打包人员,请将他们指向此问题并请他/她看看!