| <H1 ALIGN="RIGHT"><A NAME="OVERVIEW">1 - Printing System Overview</A></H1> |
| |
| <P>This chapter provides an overview of how the Common UNIX Printing System |
| works. |
| |
| <H2>The Printing Problem</H2> |
| |
| <P>For years <I>the printing problem</I> has plagued UNIX. Unlike |
| Microsoft® Windows® or Mac OS, UNIX has no standard interface or |
| system in place for supporting printers. Among the solutions currently |
| available, the Berkeley and System V printing systems are the most |
| prevalent. |
| |
| <P>These printing systems support line printers (text only) or |
| PostScript printers (text and graphics), and with some coaxing they can |
| be made to support a full range of printers and file formats. However, |
| because each varient of the UNIX operating system uses a different |
| printing system than the next developing printer drivers for a wide |
| range of printers and operating systems is extremely difficult. That |
| combined with the limited volume of customers for each UNIX varient has |
| forced most printer vendors to give up supporting UNIX entirely. |
| |
| <P>CUPS is designed to eliminate <I>the printing problem</I>. One |
| common printing system can be used by all UNIX varients to support the |
| printing needs of users. Printer vendors can use its modular filter |
| interface to develop a single driver program that supports a wide range |
| of file formats with little or no effort. Since CUPS provides both the |
| System V and Berkeley printing commands, users (and applications) can |
| reap the benefits of this new technology with no changes. |
| |
| <H2>The Technology</H2> |
| |
| <P>CUPS is based upon an emerging Internet standard called the Internet |
| Printing Protocol. IPP has been embraced by dozens of printer and |
| printer server manufacturers and is supported by Microsoft Windows |
| 2000. |
| |
| <P>IPP defines a standard protocol for printing as well as managing |
| print jobs and printer options like media size, resolution, and so |
| forth. Like all IP-based protocols, IPP can be used locally or over the |
| Internet to printers hundreds or thousands of miles away. Unlike other |
| protocols, however, IPP also supports access control, authentication, |
| and encryption, making it a much more capable and secure printing |
| solution than older ones. |
| |
| <P>IPP is layered on top of the Hyper-Text Transport Protocol ("HTTP") |
| which is the basis of web servers on the Internet. This allows users |
| to view documentation, check status information on a printer or server, |
| and manage their printers, classes, and jobs using their web browser. |
| |
| <P>CUPS provides a complete IPP/1.1 based printing system that provides |
| Basic, Digest, and local certificate authentication and user, domain, |
| or IP-based access control. TLS encryption will be available in future |
| versions of CUPS. |
| |
| <H2>Jobs</H2> |
| |
| <P>Each file or set of files that is submitted for printing is called a |
| <I>job</I>. Jobs are identified by a unique number starting at 1 and |
| are assigned to a particular destination, usually a printer. Jobs can |
| also have options associated with them such as media size, number of |
| copies, and priority. |
| |
| <H2>Classes</H2> |
| |
| <P>CUPS supports collections of printers known as <I>classes</I>. Jobs |
| sent to a class are forwarded to the first available printer in the |
| class. |
| |
| <H2>Filters</H2> |
| |
| <P>Filters allow a user or application to print many types of files |
| without extra effort. Print jobs sent to a CUPS server are filtered |
| before sending them to a printer. Some filters convert job files to |
| different formats that the printer can understand. Others perform page |
| selection and ordering tasks. |
| |
| <P>CUPS provides filters for printing many types of image files, |
| HP-GL/2 files, PDF files, and text files. CUPS also supplies PostScript |
| and image file Raster Image Processor ("RIP") filters that convert |
| PostScript or image files into bitmaps that can be sent to a raster |
| printer. |
| |
| <H2>Backends</H2> |
| |
| <P>Backends perform the most important task of all - they send the |
| filtered print data to the printer. |
| |
| <P>CUPS provides backends for printing over parallel, serial, and USB |
| ports, and over the network via the IPP, JetDirect (AppSocket), and |
| Line Printer Daemon ("LPD") protocols. Additional backends are |
| available in network service packages such as the SMB backend |
| included with the popular SAMBA software. |
| |
| <P>Backends are also used to determine the available devices. On |
| startup each backend is asked for a list of devices it supports, |
| and any information that is available. This allows the parallel |
| backend to tell CUPS that an EPSON Stylus Color 600 printer is |
| attached to parallel port 1, for example. |
| |
| <H2>Printer Drivers</H2> |
| |
| <P>Printer drivers in CUPS consist of one of more filters specific to a |
| printer. CUPS includes sample printer drivers for Hewlett-Packard |
| LaserJet and DeskJet printers and EPSON 9-pin, 24-pin, Stylus Color, |
| and Stylus Photo printers. While these drivers do not generate optimal |
| output for the different printer models, they do provide basic printing |
| and demonstrate how you can write your own printer drivers and |
| incorporate them into CUPS. |
| |
| <H2>Networking</H2> |
| |
| <P>Printers and classes on the local system are automatically shared |
| with other systems on the network. This allows you to setup one system |
| to print to a printer and use this system as a printer server or spool |
| host for all of the others. Users may then select a local printer by |
| name or a remote printer using "name@server". |
| |
| <P>CUPS also provides <I>implicit classes</I>, which are collections of |
| printers and/or classes with the same name. This allows you to setup |
| multiple servers pointing to the same physical network printer, for |
| example, so that you aren't relying on a single system for printing. |
| Because this also works with printer classes, you can setup multiple |
| servers and printers and never worry about a single point of failure |
| unless all of the printers and servers go down! |