The CUPS Filtering Architecture
The core of the CUPS filtering system is based on Ghostscript. In addition to Ghostscript, CUPS uses some
other filters of its own. You (or your OS vendor) may have plugged in even more filters. CUPS handles all data
file formats under the label of various MIME types. Every incoming print file is subjected to an initial
autotyping. The autotyping determines its given MIME type. A given MIME type implies zero or more possible
filtering chains relevant to the selected target printer. This section discusses how MIME types recognition
and conversion rules interact. They are used by CUPS to automatically set up a working filtering chain for any
given input data format.
If CUPS rasterizes a PostScript file natively to a bitmap, this is done in two stages:
The first stage uses a Ghostscript device named “cups”
(this is since version 1.1.15) and produces a generic raster format
called “CUPS raster”.
The second stage uses a “raster driver” that converts
the generic CUPS raster to a device-specific raster.
Make sure your Ghostscript version has the “cups” device compiled in (check with
gs -h |
). Otherwise you may encounter the dreaded
Unable to convert file
0 in your CUPS error_log file. To have “cups” as a device in your Ghostscript,
you either need to patch GNU Ghostscript and recompile or use
ESP Ghostscript. The superior alternative is ESP
Ghostscript. It supports not just CUPS, but 300 other devices (while GNU Ghostscript supports only about 180).
Because of this broad output device support, ESP Ghostscript is the first choice for non-CUPS spoolers, too.
It is now recommended by Linuxprinting.org for all spoolers.
CUPS printers may be set up to use external rendering paths. One of the most common is provided by the
Foomatic/cupsomatic concept from
uses the classical Ghostscript approach, doing everything in one step. It does not use the
“cups” device, but one of the many others. However, even for Foomatic/cupsomatic usage, best
model support is provided by ESP Ghostscript (more about Foomatic/cupsomatic, particularly the new version