Printing is a stepchild in most networked IT environments. Often the
setup reminds of a jungle: different protocols, printer languages and
networking protocols, central spooling and peer-to-peer printing
co-exist side by side -- but mostly not very peacefully. Admin time is
often eaten by debugging a users' print problems. The overall costs of
the undertaking is seldomly tracked and often not known at all.
Recently we see a tendency to migrate network printing (alongside
other services) over to Linux-based servers (even where the clients
remain with Microsoft operating systems), with CUPS at the head of the
migration movement. CUPS works very closely with Samba to extend its
hand to Windows-based clients.
CUPS offers some unique features no other spooling system can
- It is a network-transparent PostScript-RIP in software,
- It allows all clients to consolidate on PostScript drivers
(even if the target printer is a non-Postscript inkjet).
- Based on the new IETF standard for network printing, IPP
(Internet Printing Protocol), it is designed to replace the
venerable, but "kludgy" LPD.
CUPS offers all clients the full feature and finishing set of the
printers (various resolutions, duplex, stapling, punching, coversheets
or folding) through its support and extension of the PPD quasi-standard
(PostScript Printer Descriptions). It ships now as the default printing
system on most Linux distros; it is the printing system for Mac OS X;
it is easy to install on all commercial UNIXes and there is now evenn a
Native clients benefit from an automatic, zero-configuration setup. It
enables them to discover available printers and drivers through the
network, avoiding any specific admin or user interventions on the
clients if there are reconfigurations or printer additions and
deletions on the servers.
Windows clients may get their drivers downloaded and installed
automatically with the help of Samba'a "point and print" support.
CUPS is able to provide accounting about every job (logging the number
of pages, usernames, printername, time of print etc.) to provide a
means of control and financial planning for the efficient distribution
of ressources. It supports other established internet standards, such
as SLP (Service Location Protocol), LDAP (Lightweight Directory Access
Protocol), TLS (Transport Layer Security), and others.
This tutorial will show how to set up a print server with CUPS,
Foomatic, and Samba:
- How to set up the printing infrastructure on the Linux server with CUPS
- Host-based PostScript for non-PostScript printers: GhostScript and Foomatic
- Which printer to buy: Inkjet? Laser? Others? Which brands and models do really work?
- How to configure Samba to share CUPS print queues with Windows clients (the old "LanMan" method and the new "Point and Print").
- How to understand and use CUPS as a network PostScript RIP(PostScript drivers on clients, even for non-PostScript target devices)
- How to create and install your own CUPS filters for file formats not supported yet, watermarks, ...
- CUPS server security: Allowing and denying access to clients,
- Page Accounting with PyKota
- Where to find "migration tools" which automate the tedious task
to transfer 100s of printer drivers and printqueus from an NT
print server to a new Samba print server (achieving in minutes
what would take days if done the traditional way)
- Debugging CUPS if there are problems
One other main item is to thoroughly discuss the CUPS filtering system
and its ability to autodetect MIME types of printjobs and autoconstruct
an appropriate filtering chain to produce the right format for the
- how does autotyping MIME types work?
- which configuration files determine the filtering chain construction?
- how can we write our own filters?
- how can we write our own backends?
- how can we use our own banner pages?
- how do we make CUPS use our self-written filters and backends?
We will write some simple and some advanced CUPS filters, and we will
edit some PPD files to change their effects and operation. Amongst the
filters discussed are:
- one filter that adds a customized watermark to each page ("watermark" filter)
- one filter that merges 2 PostScript files into one before it goes to the final print device ("psmerge" filter)
- and some more....
Amongst the backends discussed are:
- one that "prints to PDF" and writes the job to a PDF file ("pdf" backend)
- one that multiplies the job and sends it to different printers at once ("fan-out" backend)
- one that compresses all files before sending them to a remote CUPS server ("gzip" backend)
- and some more....
And all this will not only be explained in theory, but accompanied by
many live demonstrations.
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....
Target audience: Everybody -- experienced network administrators as
well as "home-only" users.
Required skills: None -- but danger! Your knowledge about traditional
Unix printing might look very obsolete after attending this session...
You will really learn to appreciate the flexibility of CUPS and know
how to use it for your printing needs.