Here is some information about how printing works in Fedora, how to diagnose problems with it, and related topics.
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.
The print spooler used in Fedora is CUPS, the Common Unix Printing System. It is an implementation of IPP, the Internet Printing Protocol.
Printer drivers come with PPD files, which are descriptions of how to run the driver and which options it has.
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.
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!):
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
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.