The attached patch fixes the bug.

If the GTK print dialog finds a choice for a print option (Page Size,
Media Type, Resolution, Print Quality, ...) which is not under the
currently available choices (according to the PPD file in
/etc/cups/ppd/) it checks whether the option supports custom values and
if so, it considers the value a custom value and prefixes it with
"Custom." regardless of whether this is a valid custom value. This
usually works, if the user types in a custom value in the print dialog,
as the dialog provides the correct interface for a custom value for this
option.

Now there is a case where this easily breaks:

The dialog saves the last settings (printer selection and option
settings) which the user has used for printing so that the next time the
app is opened and the document printed, the saved settings are used by
default. Now let us choose a certain not that common paper size and
print. Then we close the app and do a system update. The update contains
a new version of our printer driver and one of the changes is that some
paper sizes in the PPD get renamed. So the paper size name we have used
for our last print job is not contained in the new PPD any more. Now we
open the app again and print the document right away, without going
through the options tabs of the print dialog and also not changing to
another printer. The print dialog recovers the saved options including
the (old) page size name. As the name does not match any page size name
of the new PPD, the dialog prefixes it with "Custom." and sends off the
job. The CUPS filters are not able to identify the paper size name and
the job errors.

Reproducer:

- Create a print queue with a PPD.
- evince an arbitrary PDF file
- Click the print icon
- In the print dialog choose the newly created queue and choose some uncommon 
paper size (not custom). Click "Print".
- Check /var/log/cups/error_log, the page size gets correctly received.
- Close evince.
- Stop CUPS, edit the PPD file removing the paper size you have selected for 
your job in the PageSize, PageRegion, PaperDimension, and ImageableArea lines.
- Start CUPS.
- Open the same PDF file again with evince, click Print and then select "Print" 
in the print dialog without changing anything.
- The job fails, in /var/log/cups/error_log you see that the page size is 
prefixed with "Custom.".

With the attached patch the print dialog checks the syntax of the
unknown option value and only if the syntax is correct for the
particular option, "Custom." is added. In the case of a page size name
this does not happen as a custom page size has to be specified as
"Custom.XXXxYYY[unit]", like "Custom.21x29.7cm".


** Patch added: "check-cups-custom-options.patch"
   
https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug/1763520/+attachment/5184169/+files/check-cups-custom-options.patch

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1763520

Title:
  after upgrade to bionic, printing fails without explanation / logs /
  debuggability

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cups-filters/+bug/1763520/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to