apple / cups

Apple CUPS Sources
https://www.cups.org
Apache License 2.0
1.95k stars 464 forks source link

Make PIN printing options from PPD available via Job Ticket API #4969

Closed michaelweghorn closed 4 years ago

michaelweghorn commented 7 years ago

As recently discussed in the thread "PPD API: Status, future and alternatives to handle printer-specific options" on the CUPS mailing list [1], [2], CUPS currently does not match PPD keywords for PIN printing to anything that is available via the Job Ticket API as well.

PIN printing (also sometimes called "confidential printing" or "secure printing") is a functionality mostly used in enterprise environments. The user chooses a PIN for a print job and the printer only starts printing when the user inserts the same PIN at the device. (So no other person can fetch the printout while the user is on the way from his/her room to the printer in a central location.)

As devices whose PPD files offer that functionality do not necessarily also support a respective IPP option by themselves (which could make using the PPD file unnecessary in favour of querying options via IPP), this is a potential issue when migrating print dialogs from the deprecated PPD API to the Job Ticket API.

As suggested on the CUPS mailing list [3], I am therefore asking to add support for this and map the PPD option to a respective IPP attribute (possibly "job-password"?).

Unfortunately, different vendors and different PPDs have different ways of specifying the options for PIN Printing. Sample PPDs of some printers providing that functionality are attached:

(There is probably a multitude of other ways how this is currently done by different vendors...)

If this makes it easier to support mapping the respective PPD options to IPP attribute(s), I would find it acceptable to require that specific keywords are used in the PPD file for the PIN printing (e.g. to require the administrator to change the name of the options of the first two PPD files to match those supported by CUPS).

PS: The first two PPDs are ones used in our organization, the third one is one from the vendor's website. The second and third PPD are basically two different PPDs for the same printer model.

[1] http://lists.cups.org/pipermail/cups/2017-January/thread.html [2] http://lists.cups.org/pipermail/cups/2017-February/thread.html [3] http://lists.cups.org/pipermail/cups/2017-February/028211.html

michaelrsweet commented 7 years ago

OK, each of these PPDs do things a bit differently, and it isn't clear what the order of digits actually is for the second PPD.

Another problem with these PPDs is that they rely on foomatic, which does some very strange things with the options themselves (which means we'd need to do other nonsense just to get foomatic to understand things... :/)

Right now I'm going to keep this open but in the "Future" milestone. In the meantime, please open up a bug against Foomatic to add support for the cupsJobPassword keyword in PPDs - then we can rely on using the "job-password" attribute/option and have the driver (Foomatic) convert as needed for the printers.

michaelweghorn commented 7 years ago

Thank you for looking at this and for the quick implementation of mapping for other keywords (handled in separate issues).

I have now created a bug for foomatic: https://bugs.linuxfoundation.org/show_bug.cgi?id=1393

OK, each of these PPDs do things a bit differently, and it isn't clear what the order of digits actually is for the second PPD.

Despite the opposite order in the PPD file, "SecuredPW4" is the first digit to be entered at the device, "SecuredPW5" is the second one, etc.

michaelrsweet commented 4 years ago

I think until the Foomatic bug is addressed there isn't any hope of us fixing this. Once it is, please file a new bug pointing to the Foomatic feature and we'll consider supporting it. (but hopefully they'll just adopt what we already have for IPP Everywhere drivers...)