Debian

Cups 在哪裡保存列印作業資訊?

  • December 9, 2018

我們正在嘗試組裝一個免費軟體堆棧來獲取詳細的列印作業統計資訊,類似於Papercut Printlogger所做的,用於原始列印隊列。我們一直在測試Debian GNU 中的Apple Common Unix 列印系統(Cups)不是 Unix (GNU)/ LinuxPykota 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,這些將是:

/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 問題的回答:

我的 StackOverflow 答案的螢幕截圖

不幸的是,這些有用的工具沒有被任何發行版打包!如果您認識發行版打包人員,請將他們指向此問題並請他/她看看!

引用自:https://serverfault.com/questions/911797