[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