]>
Commit | Line | Data |
---|---|---|
ef416fc2 | 1 | <H1 ALIGN="RIGHT"><A NAME="OVERVIEW">1 - Printing System Overview</A></H1> |
2 | ||
3 | <P>This chapter provides an overview of how the Common UNIX Printing System | |
4 | works. | |
5 | ||
6 | <H2>The Printing Problem</H2> | |
7 | ||
8 | <P>For years <I>the printing problem</I> has plagued UNIX. Unlike | |
9 | Microsoft® Windows® or Mac OS, UNIX has no standard interface or | |
10 | system in place for supporting printers. Among the solutions currently | |
11 | available, the Berkeley and System V printing systems are the most | |
12 | prevalent. | |
13 | ||
14 | <P>These printing systems support line printers (text only) or | |
15 | PostScript printers (text and graphics), and with some coaxing they can | |
16 | be made to support a full range of printers and file formats. However, | |
17 | because each varient of the UNIX operating system uses a different | |
18 | printing system than the next developing printer drivers for a wide | |
19 | range of printers and operating systems is extremely difficult. That | |
20 | combined with the limited volume of customers for each UNIX varient has | |
21 | forced most printer vendors to give up supporting UNIX entirely. | |
22 | ||
23 | <P>CUPS is designed to eliminate <I>the printing problem</I>. One | |
24 | common printing system can be used by all UNIX varients to support the | |
25 | printing needs of users. Printer vendors can use its modular filter | |
26 | interface to develop a single driver program that supports a wide range | |
27 | of file formats with little or no effort. Since CUPS provides both the | |
28 | System V and Berkeley printing commands, users (and applications) can | |
29 | reap the benefits of this new technology with no changes. | |
30 | ||
31 | <H2>The Technology</H2> | |
32 | ||
33 | <P>CUPS is based upon an emerging Internet standard called the Internet | |
34 | Printing Protocol. IPP has been embraced by dozens of printer and | |
35 | printer server manufacturers and is supported by Microsoft Windows | |
36 | 2000. | |
37 | ||
38 | <P>IPP defines a standard protocol for printing as well as managing | |
39 | print jobs and printer options like media size, resolution, and so | |
40 | forth. Like all IP-based protocols, IPP can be used locally or over the | |
41 | Internet to printers hundreds or thousands of miles away. Unlike other | |
42 | protocols, however, IPP also supports access control, authentication, | |
43 | and encryption, making it a much more capable and secure printing | |
44 | solution than older ones. | |
45 | ||
46 | <P>IPP is layered on top of the Hyper-Text Transport Protocol ("HTTP") | |
47 | which is the basis of web servers on the Internet. This allows users | |
48 | to view documentation, check status information on a printer or server, | |
49 | and manage their printers, classes, and jobs using their web browser. | |
50 | ||
51 | <P>CUPS provides a complete IPP/1.1 based printing system that provides | |
52 | Basic, Digest, and local certificate authentication and user, domain, | |
53 | or IP-based access control. TLS encryption will be available in future | |
54 | versions of CUPS. | |
55 | ||
56 | <H2>Jobs</H2> | |
57 | ||
58 | <P>Each file or set of files that is submitted for printing is called a | |
59 | <I>job</I>. Jobs are identified by a unique number starting at 1 and | |
60 | are assigned to a particular destination, usually a printer. Jobs can | |
61 | also have options associated with them such as media size, number of | |
62 | copies, and priority. | |
63 | ||
64 | <H2>Classes</H2> | |
65 | ||
66 | <P>CUPS supports collections of printers known as <I>classes</I>. Jobs | |
67 | sent to a class are forwarded to the first available printer in the | |
68 | class. | |
69 | ||
70 | <H2>Filters</H2> | |
71 | ||
72 | <P>Filters allow a user or application to print many types of files | |
73 | without extra effort. Print jobs sent to a CUPS server are filtered | |
74 | before sending them to a printer. Some filters convert job files to | |
75 | different formats that the printer can understand. Others perform page | |
76 | selection and ordering tasks. | |
77 | ||
78 | <P>CUPS provides filters for printing many types of image files, | |
79 | HP-GL/2 files, PDF files, and text files. CUPS also supplies PostScript | |
80 | and image file Raster Image Processor ("RIP") filters that convert | |
81 | PostScript or image files into bitmaps that can be sent to a raster | |
82 | printer. | |
83 | ||
84 | <H2>Backends</H2> | |
85 | ||
86 | <P>Backends perform the most important task of all - they send the | |
87 | filtered print data to the printer. | |
88 | ||
89 | <P>CUPS provides backends for printing over parallel, serial, and USB | |
90 | ports, and over the network via the IPP, JetDirect (AppSocket), and | |
91 | Line Printer Daemon ("LPD") protocols. Additional backends are | |
92 | available in network service packages such as the SMB backend | |
93 | included with the popular SAMBA software. | |
94 | ||
95 | <P>Backends are also used to determine the available devices. On | |
96 | startup each backend is asked for a list of devices it supports, | |
97 | and any information that is available. This allows the parallel | |
98 | backend to tell CUPS that an EPSON Stylus Color 600 printer is | |
99 | attached to parallel port 1, for example. | |
100 | ||
101 | <H2>Printer Drivers</H2> | |
102 | ||
103 | <P>Printer drivers in CUPS consist of one of more filters specific to a | |
104 | printer. CUPS includes sample printer drivers for Hewlett-Packard | |
105 | LaserJet and DeskJet printers and EPSON 9-pin, 24-pin, Stylus Color, | |
106 | and Stylus Photo printers. While these drivers do not generate optimal | |
107 | output for the different printer models, they do provide basic printing | |
108 | and demonstrate how you can write your own printer drivers and | |
109 | incorporate them into CUPS. | |
110 | ||
111 | <H2>Networking</H2> | |
112 | ||
113 | <P>Printers and classes on the local system are automatically shared | |
114 | with other systems on the network. This allows you to setup one system | |
115 | to print to a printer and use this system as a printer server or spool | |
116 | host for all of the others. Users may then select a local printer by | |
117 | name or a remote printer using "name@server". | |
118 | ||
119 | <P>CUPS also provides <I>implicit classes</I>, which are collections of | |
120 | printers and/or classes with the same name. This allows you to setup | |
121 | multiple servers pointing to the same physical network printer, for | |
122 | example, so that you aren't relying on a single system for printing. | |
123 | Because this also works with printer classes, you can setup multiple | |
124 | servers and printers and never worry about a single point of failure | |
125 | unless all of the printers and servers go down! |