[cups] PPD API: Status, future and alternatives to handle printer-specific options

Michael Weghorn m.weghorn at posteo.de
Tue Jan 31 00:21:33 PST 2017


Hi,

CUPS' PPD API has been deprecated for quite a while now.

On the other hand, it seems to me like it was still used in many places.

As far as I understand it so far, the use of IPP (and in particular IPP 
Everywhere) makes the direct use of PPDs unnecessary.
I do not yet have a deeper understanding at everything currently 
happening in the are of IPP Everywhere and driverless printing, but I 
followed the discussions a bit and it sounded to me like PPDs were still 
used in conjunction with them and are generated in the background by 
CUPS (and/or cups-browsed) and are still used internally.

Most print dialog implementations I know of rely on the use of PPDs (and 
the PPD API) in order to provide printer-specific options and pass them 
to CUPS.

The documentation of the PPD API explicitly says: "The PPD API is 
deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job 
Ticket APIs in the CUPS API documentation. These functions will be 
removed in a future release of CUPS." [1]
When I looked at that a while ago, I did not find out how to process all 
printer-specific options (like input trays, stapling, colour mode, 
confidential printing with PIN, etc.) using the Job Ticket API rather 
than the deprecated PPD API.

I would be very grateful if somebody could give me more information on 
the following questions:

1) Is my understanding as described above basically correct? 
(Corrections and additional information are welcome.)
2) What is the recommended way to handle printer-specific options in a 
print dialog? Which API should be used? (The implementation should 
support both "traditional" printers set up via PPD files and PPD-less 
printers like IPP Everywhere printers.)
3) Are there concrete plans regarding the removal of CUPS' PPD API? Is 
it possible to roughly say when it is probably going to disappear?


Background: The Qt 4 print dialog handled printer-specific options using 
the PPD API but the implementation had been rather broken in Qt 4 and 
was removed for Qt 5, with the plan to reimplement them as part of a new 
printing system. However, work on the new printing system could not be 
continued due to lack of time and money. Currently, printer-specific 
options are not available in the Qt 5 print dialog (apart from duplex 
and color mode). We are currently considering to implement support for 
printer-specific options in Qt 5 and would like to do it "right", i.e. 
avoiding deprecated APIs and doing it in a way that is supported in the 
future as well. (More information on the discussion for the Qt print 
dialog can be found on Qt's mailing lists. [2], [3], [4])

Regards,
Michael


[1] https://www.cups.org/doc/api-ppd.html
[2] 
http://lists.qt-project.org/pipermail/interest/2017-January/025970.html
[3] 
http://lists.qt-project.org/pipermail/development/2017-January/028597.html



More information about the cups mailing list