From Fedora Project Wiki

Foreword

Here is some information about how printing works in Fedora, how to diagnose problems with it, and related topics.

Debugging problems

See the How to debug printing problems page for some information about how to diagnose printing problems and what information is needed when filing bug reports.

CUPS

The print spooler used in Fedora is CUPS, the Common Unix Printing System. It is an implementation of IPP, the Internet Printing Protocol.

PPDs

Printer drivers come with PPD files, which are descriptions of how to run the driver and which options it has.

Scheduler

The main part of CUPS is the scheduler, cupsd. This is a system service started at boot time. It is responsible for responding to IPP requests such as examining printer queue attributes, printing files, or adding and deleting queues.

When a queue is added, the PPD file for the driver is copied to /etc/cups/ppd/ and the PageSize option is modified to be correct for the system locale (set in /etc/sysconfig/i18n). To adjust the system locale, use system-config-language.

Drivers/filters

CUPS comes with several drivers and filters itself, but many are provided by other packages including:

  • poppler-utils, for input filters converting PDF into PostScript format
  • ghostscript-cups, for input filters converting PostScript and PDF into CUPS raster format
  • the hpijs package (from HPLIP) provides both hpijs, the inkjet server (IJS) driver used for "Foomatic/hpijs" drivers; and hpcups, the newer-style raster driver
  • gutenprint-cups provides a raster driver
  • foomatic provides a CUPS filter for using various older-style ghostscript built-in drivers

If your printer has a driver that you think should be in Fedora but isn't, why not consider having a go at packaging it yourself? This would make it possible for the right driver to be automatically installed when you plug in the printer.

Free drivers that are not yet packaged in Fedora but should be (have a go!):

Backends

Once the job file has been converted to the printer's native format, CUPS backends transfer the job to the printer. CUPS provides several methods for doing this, but some are provided by other packages including:

  • smb from the samba-client package
  • hp from HPLIP
  • bjnp from the cups-bjnp package

Configuration tool

Printer queues are configured using system-config-printer. This package also provides the printer status icon in the notification area, and creates queues automatically when USB printers are connected.