Question

I need to know each time a Mac print job is created/completed, plus some information about that job (what was printed, pages, copies, etc).

The best method I've come up with thus far is to use kqueue() on /var/spool/cups/ and then parse the c##### files as they're created, but I'm wondering if there's a better way.

Was it helpful?

Solution

I'd think about creating a filter that you can put into the CUPS pipeline that collects this information and stores it for you (say in a database). Then you can access the database to get the information using any standard database access mechanism. Basically the filter is just a command-line program that gets a number of parameters passed to it from CUPS and needs to read input on stdin and write it to stdout. You can find more information at http://www.cups.org/documentation.php/api-filter.html.

OTHER TIPS

Have you ever looked what the page_log file provides for you? There's a man page providing details about its format. Recent versions of CUPS will let you configure the amount of info logged in that file.

Have you looked into the IPP subscription schemes supported by CUPS?

These could trigger a mailto: or an rss: notification upon certain print system events. The IPP operations related to this topic are:

  • Create-Job-Subscriptions, Create-Printer-Subscriptions, Create-Resource-Subscriptions, Create-System-Subscriptions

Details about this feature are in the CUPS Programming Manual:

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top