Cups 在哪里保存打印作业信息?

Lea*_*dro 5 debian cups print-server accounting

我们正在尝试组装一个免费软件堆栈来获取详细的打印作业统计信息,类似于Papercut Printlogger为原始打印队列所做的事情。我们一直在Debian GNU 不是 Unix (GNU)/ Linux中使用Pykota Tee for Cups (Tea4Cups)测试Apple Common Unix 打印系统(Cups) 。

在 Cups 中,惠普(HP)打印机控制语言(PCL) 打印作业文件包括 HP打印机作业语言(PJL) 标题,其中包含作业信息,例如份数、双面或单面、彩色或黑白等。HP 甚至在同一个文档中定义了 PCL 和 PJL。

Microsoft (MS) Windows中,每个打印作业都作为两个文件排队:一个Spool (SPL) 文件,其中包含打印文件本身,无论使用哪种语言:Adobe Postscript (PS)、HP PCL、Epson 打印机标准代码(Esc/ P),无论如何;以及包含 PJL 信息的影子(SHD) 文件。

据我们所知,Cups 中的 Postscript 打印作业不包含与 PJL 或 SHD 等效的任何内容,无论是在 PS 文件本身还是在单独的文件中。

那么,在Cups中是否可以获取这样的打印作业信息呢?

Kur*_*fle 6

CUPS 还(暂时)将打印作业存储在(至少)两个不同的文件中。对于由单文档作业组成的给定作业 ID 123456,这些将是:

/var/spool/cups/d123456-001
/var/spool/cups/c123456
Run Code Online (Sandbox Code Playgroud)

对于由多个文档组成的给定作业 ID 123457,这些将是:

/var/spool/cups/d123457-001
/var/spool/cups/d123457-002
/var/spool/cups/d123457-003
/var/spool/cups/c123457
Run Code Online (Sandbox Code Playgroud)

这里,该d....文件表示包含作业文档的实际数据文件,与 CUPS 客户端提交的作业文档完全相同(并且在用于将作业文件转换为目标打印机所需格式的 CUPS 过滤链之前)。

c....文件表示作业控制文件,其中包含有关作业的所有相关元信息(最重要的可能是:用户想要的打印选项,例如“双面打印、装订、纸盘 3 中的纸张”)。

今天早些时候,对我来说,问题是如何剖析该c....文件并从中提取所有血淋淋的细节,因为它不是明文的。与strings它对抗,揭示了一些,但不是全部。

我开始在几乎所有 StackExchange 中搜索答案......就在这时我注意到了这个相关问题。然后我搜索引擎寻找更多信息,但仍然没有有用的结果。

最后,我什至自己在 StackOverflow 上问了一个关于这个问题的问题:

然后我继续在 Github 上搜索 CUPS 源代码以寻找任何线索。几个小时后,我找到了答案:

  • 使用可以从 CUPS 源构建的实用程序(但它不会构建为默认 Makefile 目标,因此不会在我知道的任何Linux 发行版上或 macOS 上发布):它名为testipp.

请参阅我自己对上面链接的 StackOverflow 问题的回答:

我的 StackOverflow 答案的屏幕截图

不幸的是,这些有用的实用程序没有被任何发行版打包!如果您认识发行版打包人员,请向他们指出此问题并请他/她看看!