Make PDF "Printer" functionality for CUPS as default

Registered by Christian Wolf

CUPS should always be installed with the PDF-printing functionality that comes with cups-pdf package as long as the migration to PDF as the future native printing format for CUPS instead of ps has not been finished.

Blueprint information

Martin Pitt
Needs approval
Series goal:
Milestone target:
Started by
Martin Pitt
Completed by
Martin Pitt


IMHO, easy to implement - the cups package (or the ubuntu-desktop) should come with a dependency for cups-pdf, cups-pdf should come along on the installer CD. The post-install script of cups-pdf should have a command like "lpadmin -p PDF -E -v cups-pdf:/ -P <generic color PS printer PPD> -o PageSize=<"Letter" or "A4", depending on locale>" to set up the queue and the post-unistall script "lpadmin -x PDF" to remove the queue.

The access right problem mentioned in the forum postings about setting up the PDF printer in Dapper is fixed in Edgy, so no more manual interaction is required.

Also, printer settings such as paper format etc. should automatically be customized depending on the country selection etc. of the user. This can also be done in the post-install script of cups-pdf, checking locale, checking whether there is perhaps a queue named "PDF" and adapting the "lpadmin" command appropriately.

This should make sure that the user gets a standard file dialog for the destination file name, or another sane way of determining the final location and name.

This also needs an audit of the root privilege handling: the backend should open the target file fd and immediately drop privs before doing any potentially dangerous work.

Steps to implement:

1. Promote cups-pdf to main ( DONE
2. On package ubuntu-desktop: Require cups-pdf [Bug report filed: Bug #82671] DONE
3. On cups-pdf: Let post-install create and pre-uninstall remove the PDF queue [Bug report filed: Bug #82674] DONE
4. On cups-pdf: Let cups-pdf backend drop privileges as soon as output file is opened [Bug report filed: Bug #82677] DONE

With all these steps done this spec is implemented.

Sample screenshot how this could look after finished:

This one is another way to implement this feature, taken from FreeSpire 1.0:


Work Items