Printing is one of the most complicated day-to-day tasks happening in
IT -- on all OS platforms...
For long time Linux and Unix printing relied on technology of the 70ies,
using the venerable "Line Printer Daemon". LPD originally was developed
for ASCII-only text printers. Nowadays the printers are much different.
They don't only print text: Colours, graphics, photos, different paper
types, stapling, binding, and more are state-of-the-art. But still
variations of this ancient terminal-based printing system, while not
supporting all these options and difficult to maintain in networks, are
in widespread usage.
Two developments from recent years make lives much easier, for users and
system administrators alike:
- the printer spooler CUPS (the Common Unix Printing System), including
a network PostScript and image file RIP (Raster Image Processor) and
- Foomatic from linuxprinting.org, a spooler-independent infrastructure
for integration of printer drivers.
Both packages are highly beneficial for all users, whether there is only
one printer at a home PC to be run, or hundreds in an enterprise network.
CUPS provides a very easy-to-use and flexible networking architecture:
Printers set up on one server are automatically made available to all
clients. No configuration is needed on clients. Changes on a server
propagate to the clients within a minute. Client-side printer-setup
is "Plug'n'Play", with "Zero Administration" rather than configuration
marathons. Due to the IPP (Internet Printing Protocol) used by CUPS,
being based on HTTP 1.1, common internet standards, like Basic and Digest
Authentification, SSL, TLS, LDAP, SLP, ... are easily bolted into the
CUPS gives every Linux or Unix desktop user instantaneous access to almost
all conceivable device features (as paper size, input tray, output quality,
stapling, ...). To this end it uses the PPD file ("PostScript Printer
Description") concept.. The PPD file format specification has been
developed and still is maintained by Adobe. There are two fundamentally
different types of "PPD" files:
- "Original" PPD files come with every PostScript printer and are provided
by the manufacturer.
- For non-PostScript printers they come with any CUPS driver or from the
The original PPD files expect the PostScript printfile to be processed by
the printer-builtin RIP (Raster Image Processor). They add the knowledge
about device-specific printoptions and how they are controlled to the
"normally" device-independent PostScript page description.
The PPD files for non-PS devices do by and large the same thing, but they
additionally carry a call for a device-specific "filter" inside, which is
executed *before* the PostScript job is sent to the printer. This filter
is basically doing the same job as the builtin RIP of a PostScript printer
would do -- but is doing it on the print server side, before the job enters
the realm of the print device.
There is also a difference between the Foomatic and the "native" CUPS PPDs
- "Normal" CUPS drivers take as their starting point of work the generic
"CUPS Raster" file format. CUPS Raster is generated in the first stage
of the CUPS Rendering/RIP-ping process by the CUPS RIP from a PostScript
input, with device-specific raster drivers working their way in a
separate, second stage.
- Foomatic CUPS drivers are standard Ghostscript "devices", which
take off at an earlier stage, when the printfile is still in its
PostScript stadium. They use exactly the same Rendering/RIP-ping
procedure as any other Ghostscript-based software.
While Foomatic was originally "invented" to help provide more CUPS
drivers, it has now developed beyond CUPS-only support. Foomatic nowadays
is a database system which integrates *every* free software printer driver
with every free spooler. It makes all the driver's options available for
users, using concepts lifted from the CUPS codebase and utilizing those
in other, more traditional spoolers.
Foomatic's main part is an XML database. The database contains entries for
more than 800 printers. This includes their possible drivers and how they
are supported. Their GhostScript command line and all user-suppliable
options are documented.
To set up a printer with Foomatic is a straight-forward task:
- surf to Linuxprinting.org;
- select the printer model from a list;
- read the documentation hints about the different drivers for that model;
- choose one driver (there is always a recommended one based on the
quality provided, even if it is slower than others);
- select the spooler in use;
- generate online a configuration file based on the previous selections
(for CUPS this will be a PPD);
- download configuration file and some helper files (cupsomatic, gs-wrapper)
according to the documentation provided there.
A perfectly working printer for hi-res photo quality output can be configure
within one minute (provided you've got a fast internet connection).
One can also install the complete Foomatic package. This way one can
generate and maintain printer queues, handle jobs, and even print with the
Foomatic scripts: The scripts provide a unique command line syntax for all
spoolers. Foomatic thus takes the role of a printsystem meta-configurator,
providing one interface to different print sub-systems (CUPS, LPRng, PDQ,
Both CUPS and Foomatic form new printing standards. They are used or
planned to be used in nearly every Linux distribution. They are ready-to-use
on all Unix-based systems (like Mac OS X).
The tutorial will not be a boring "slides-only" talk. If you expect this,
look for another one!
- We will demonstrate how to set up printers with CUPS and Foomatic.
- We will demonstrate networked printing with CUPS and Samba.
- We will demonstrate the different graphical interfaces for printing.
- We will demonstrate print queue administration, user quotas, and much more.
And all this will not only be explained in theory, but accompanied by many
The approach to the workshop is flexible. Participants will be able to
ask for emphasis on certain topics at the beginning of the session. They
might even bring their laptops and get help to setup their printing system
or troubleshoot some weird problem....
Everybody -- experienced network administrators as well as "home-only"
None -- but danger! Your knowledge about traditional Unix printing might
look very obsolete after attending this session...