]> git.ipfire.org Git - thirdparty/cups.git/blame - doc/help/overview.html
Load cups into easysw/current.
[thirdparty/cups.git] / doc / help / overview.html
CommitLineData
ef416fc2 1<HTML>
2<!-- SECTION: Getting Started -->
3<HEAD>
4 <TITLE>Overview of CUPS</TITLE>
5</HEAD>
6<BODY>
7
8<P>Printing within UNIX has historically been done using one of
9two printing systems - the Berkeley Line Printer Daemon (LPD)
10[RFC1179] and the AT&amp;T Line Printer system. These printing
11systems were designed in the 70's for printing text to line
12printers; vendors have since added varying levels of support for
13other types of printers.</P>
14
15<P>Replacements for these printing systems have emerged [LPRng,
16Palladin, PLP], however none of the replacements change the
17fundamental capabilities of these systems.</P>
18
19<P>Over the years several attempts at developing a standard
20printing interface have been made, including the draft POSIX
21Printing standard developed by the Institute of Electrical and
22Electronics Engineers, Inc. (IEEE) [IEEE-1387.4] and Internet
23Printing Protocol (IPP) developed by the Internet Engineering
24Task Force (IETF) through the Printer Working Group (PWG)
25[IETF-IPP]. The POSIX printing standard defines a common set of
26command-line tools as well as a C interface for printer
27administration and print jobs, but has been shelved by the
28IEEE.</P>
29
30<P>The Internet Printing Protocol defines extensions to the
31HyperText Transport Protocol 1.1 [RFC2616] to provide support
32for remote printing services. IPP/1.1 was accepted by the IETF
33as a proposed standard in ??? of ???. Unlike POSIX Printing, IPP
34enjoys widespread industry support and has become the standard
35network printing solution for all operating systems.</P>
36
37<P>CUPS uses IPP/1.1 to provide a complete, modern printing
38system for UNIX that can be extended to support new printers,
39devices, and protocols while providing compatibility with
40existing UNIX applications. CUPS is free software provided under
41the terms of the GNU General Public License and GNU Library
42General Public License.</P>
43
44<H2 CLASS="title">History</H2>
45
46<P>The first production release of CUPS (based on IPP/1.0) was
47released in October of 1999. Version 1.1 of CUPS was released in
48August of 2002 ???? and added support for IPP/1.1.</P>
49
50<P>CUPS 1.2 is based on IPP/1.1 and adds many of the functional
51enhancements that have been requested by our users. As with CUPS
521.1, CUPS 1.2 will be followed by patch releases that address
53any problems found with the software. New features will be put
54in the 1.3 release to follow.</P>
55
56<H2 CLASS="title">Design Overview</H2>
57
58<P>Like most printing systems, CUPS is designed around a central
59print scheduling process that dispatches print jobs, processes
60administrative commands, provides printer status information to
61local and remote programs, and informs users as needed. Figure 1
62shows the basic organization of CUPS.</P>
63
64<P ALIGN="CENTER"><IMG SRC="../images/cups-block-diagram.gif"
65WIDTH="470" HEIGHT="170" ALT="CUPS Block Diagram"/><BR>
66<I>Figure 1 - CUPS Block Diagram</I></P>
67
68<H3>Scheduler</H3>
69
70<P>The scheduler is a HTTP/1.1 server application that handles
71HTTP requests. Besides handling printer requests via IPP POST
72requests, the scheduler also acts as a full-featured web server
73for documentation, status monitoring, and administration.</P>
74
75<P>The scheduler also manages a list of available printers on
76the LAN and dispatches print jobs as needed using the
77appropriate filters and backends.</P>
78
79<H3>Configuration Files</H3>
80
81<P>The configuration files consist of:</P>
82
83<ul>
84
85 <LI>The HTTP server configuration file.</LI>
86
87 <LI>Printer and class definition files.</LI>
88
89 <LI>MIME type and conversion rule files.</LI>
90
91 <LI>PostScript Printer Description (PPD) files.</LI>
92
93</ul>
94
95<P>The HTTP server configuration file is purposely similar to
96the Apache server configuration file and defines all of the
97access control properties for the server.</P>
98
99<P>The printer and class definition files list the available
100printer queues and classes. Printer classes are collections of
101printers. Jobs sent to a class are forwarded to the first
102available printer in the class, round-robin fashion.</P>
103
104<P>The MIME type files list the supported MIME types
105(text/plain, application/postscript, etc.) and "magic' rules for
106automatically detecting the format of a file. These are used by
107the HTTP server to determine the <tt>Content-Type</tt> field for
108<tt>GET</tt> and <tt>HEAD</tt> requests and by the IPP request
109handler to determine the file type when a <tt>Print-Job</tt> or
110<tt>Send-File</tt> request is received with a
111<tt>document-format</tt> of
112<tt>application/octet-stream</tt>.</P>
113
114<P>The MIME conversion rule files list the available filters.
115The filters are used when a job is dispatched so that an
116application can send a convenient file format to the printing
117system which then converts the document into a printable format
118as needed. Each filter has a relative cost associated with it,
119and the filtering algorithm chooses the set of filters that will
120convert the file to the needed format with the lowest total
121"cost".</P>
122
123<P>The PPD files describe the capabilities of all printers, not
124just PostScript printers. There is one PPD file for each
125printer. PPD files for non-PostScript printers define additional
126filters through <tt>cupsFilter</tt> attributes to support
127printer drivers.</P>
128
129<H3>CUPS API</H3>
130
131<P>The CUPS API contains CUPS-specific convenience functions for
132queuing print jobs, getting printer information, accessing
133resources via HTTP and IPP, and manipulating PPD files. Unlike
134the rest of CUPS, the CUPS API is provided under the terms of
135the GNU LGPL so it may be used by non-GPL applications.</P>
136
137<H3>Berkeley and System V Commands</H3>
138
139<P>CUPS provides the System V and Berkeley command-line
140interfaces for submitting jobs and checking the printer status.
141The <tt>lpstat</tt> and <tt>lpc status</tt> commands
142also show network printers ("printer@server") when printer
143browsing is enabled.</P>
144
145<P>The System V administation commands are supplied for managing
146printers and classes. The Berkeley printer administration tool
147(<tt>lpc</tt>) is only supported in a "read-only' mode to
148check the current status of the printer queues and
149scheduler.</P>
150
151<H3>Filters</H3>
152
153<P>A filter program reads from the standard input or from a file
154if a filename is supplied. All filters must support a common set
155of options including printer name, job ID, username, job title,
156number of copies, and job options. All output is sent to the
157standard output.</P>
158
159<P>Filters are provided for many file formats and include image
160file and PostScript raster filters that support non-PostScript
161printers. Multiple filters are run in parallel to produce the
162required output format.</P>
163
164<P>The PostScript raster filter is based on the ESP Ghostscript
165core. Instead of using the Ghostscript printer drivers, the CUPS
166filter uses a generic CUPS raster printer driver and
167CUPS-compliant front-end to support any kind of raster printer.
168This allows the same printer driver filter to be used for
169printing raster data from any filter.</P>
170
171<pre>Talk about Apple's use of CUPS...</pre>
172
173<H3>CUPS Imaging</H3>
174
175<P>The CUPS Imaging library provides functions for managing
176large images, doing colorspace conversion and color management,
177scaling images for printing, and managing raster page streams.
178It is used by the CUPS image file filters, the PostScript RIP,
179and all raster printers drivers.</P>
180
181<H3>Backends</H3>
182
183<P>A backend program is a special filter that sends print data
184to a device or network connection. Backends for parallel,
185serial, USB, LPD, IPP, and AppSocket (JetDirect) connections are
186provided in CUPS 1.2.</P>
187
188<P>SAMBA version 2.0.6 and higher includes a SMB backend
189(<tt>smbspool(1)</tt>) that can be used for printing to
190Windows.</P>
191
192<H2 CLASS="title">Network Printing</H2>
193
194<P>Traditionally, network printing has been one of the hardest
195things to get working under UNIX. One reason is because each
196vendor added their own extensions to the LPD protocol (the
197previous standard for network printing), making cross-platform
198printing difficult if not impossible.</P>
199
200<P>Another reason is that you have to administer every network
201printer on every client machine. In some cases you can "clone'
202the printer configuration from a "master' client to each of the
203others, but even that can be time-consuming and error-prone.
204Something better is needed.</P>
205
206<P>CUPS provides "printer browsing", which allows clients to
207automatically see and use printers from any server on a LAN.
208This means that you only need to configure the server and the
209clients will automatically see the printers and classes on
210it.</P>
211
212<P>In addition, CUPS can automatically merge multiple identical
213network printers into "implicit classes". This allows clients to
214send jobs to the implicit class and have them print on the first
215available printer or server. In addition, failsafe and
216load-balancing functions are enabled simply by defining the same
217printer on multiple servers!</P>
218
219<H2 CLASS="title">New Features in CUPS 1.2</H2>
220
221<P>CUPS 1.2 includes many new features and capabilities:
222
223<ol>
224
225 <LI><A HREF="#BACKENDS">Backends</A>
226
227 <LI><A HREF="#BANNERS">Banner Page Support</A>
228
229 <LI><A HREF="#DIGEST">Digest Authentication</A>
230
231 <LI><A HREF="#DIRSVC">Directory Services</A>
232
233 <LI><A HREF="#FHS2">Directory Structure Changes</A>
234
235 <LI><A HREF="#DOCOS">Documentation</A>
236
237 <LI><A HREF="#DRIVERS">Drivers</A>
238
239 <LI><A HREF="#FILTERS">Filters</A>
240
241 <LI><A HREF="#IPP">IPP Support</A>
242
243 <LI><A HREF="#PERSISTENCE">Job Persistence</A>
244
245 <LI><A HREF="#LPD">LPD Client Support</A>
246
247 <LI><A HREF="#USEROPTS">User-Defined Printers and Options</A>
248
249 <LI><A HREF="#WEB">Web Administration Interface</A>
250
251</ol>
252
253<H3><A NAME="BACKENDS">1. Backends</A></H3>
254
255<P>CUPS 1.2 implements a new backend interface for retrieving a
256list of available devices for CUPS clients. This allows
257administration interfaces to query the CUPS scheduler for a list
258of available devices, automatically configure printers if the
259device identification information is available, and present the
260user with a list of available devices rather than relying on the
261user to know what devices are configured on the system.</P>
262
263<P>The new release also includes a backend for USB printers
264under *BSD and Linux. Support for USB under Solaris 8 will be
265provided in a subsequent patch release.</P>
266
267<H3><A NAME="BANNERS">2. Banner Page Support</A></H3>
268
269<P>CUPS 1.2 includes support for banner pages at the beginning
270and end of a job. Banner pages may be of any file format and
271support variable substitution for job titles, usernames, etc.
272Default banner pages are associated with each printer and can be
273overridden with command-line options by the user.</P>
274
275<H3><A NAME="DIGEST">3. Digest Authentication</A></H3>
276
277<P>Digest authentication provides a more secure method of
278authenticating access to the printing system. Unlike Basic
279authentication, Digest authentication does not send passwords
280"in the clear' so it is more difficult to gain unauthorized
281access to your system.</P>
282
283<P>CUPS 1.2 implements Digest authentication using a special MD5
284password file instead of the UNIX password file. This file is
285managed using the new <tt>lppasswd</tt> command.</P>
286
287<H3><A NAME="DIRSVC">4. Directory Services</A></H3>
288
289<P>CUPS 1.2 adds new directory service ("printer browsing")
290features to make using CUPS on large LANs and WANs easier. You
291can now poll a remote server for printer information and relay
292it to the LAN as well as restrict what printer information is
293processed (e.g. to "hide" servers, domains, or networks that you
294don't want to see.)</P>
295
296<H3><A NAME="FHS2">5. Directory Structure Changes</A></H3>
297
298<P>CUPS 1.2 now uses a directory structure that complies with
299the Filesystem Hierarchy Standard (FHS), version 2.0. This
300should make integration into existing Linux and *BSD
301distributions a lot easier.</P>
302
303<H3><A NAME="DOCOS">6. Documentation</A></H3>
304
305<P>The CUPS 1.2 documentation has gone through many revisions,
306including a completely rewritten administrators manual, a new
307programmers manual, and an IPP implementation reference
308manual.</P>
309
310<H3><A NAME="DRIVERS">7. Drivers</A></H3>
311
312<P>CUPS 1.2 includes drivers for EPSON dot-matrix and inkjet
313printers. As with the HP PCL drivers, the EPSON drivers don't
314necessarily provide the best possible output for each printer
315but should provide adequate printing quality for general
316day-to-day printing.</P>
317
318<H3><A NAME="FILTERS">8. Filters</A></H3>
319
320<P>CUPS 1.2 includes new image, PostScript, PDF, and text
321filters. The image filters have been upgraded to support Windows
322BMP and Alias PIX files.</P>
323
324<P>The PostScript filter is now based off ESP Ghostscript. The
325new filter provides much better performance with
326higher-resolution printers and supports all Level 3 PostScript
327language features.</P>
328
329<P>The new PDF filter is based off the excellent Xpdf software
330from Derek Noonburg and supports automatic page scaling. The new
331filter is a faster, smaller, more reliable replacement for the
332GNU Ghostscript PDF filtering that was used in CUPS 1.0.</P>
333
334<P>The new text filter now supports bidirectional text and can
335embed fonts as needed.</P>
336
337<H3><A NAME="IPP">9. IPP Support</A></H3>
338
339<P>Probably the least visible portion of CUPS is the IPP
340support. CUPS 1.1 implements all of the required IPP/1.1
341operations and attributes and most of the optional ones. The
342optional Create-Job and Send-File operations are now
343implemented, allowing for better System V printing system
344compatibility (one job ID per <tt>lp</tt> command) and support
345for banner pages.</P>
346
347<H3><A NAME="PERSISTENCE">10. Job Persistence</A></H3>
348
349<P>CUPS 1.2 supports job persistence. This means that jobs are
350preserved even after a reboot, a feature that was sorely missing
351from CUPS 1.0.</P>
352
353<P>In addition, CUPS 1.2 allows you to keep job information
354after the job has printed. The basic post-job persistence mode
355provides a job history (number of pages printed, time job was
356printed, etc.) but does not preserve the actual job files. This
357can be changed to discard all information after a job is printed
358or keep the job files after printing so you can reprint a job at
359some later time.</P>
360
361<H3><A NAME="LPD">11. LPD Client Support</A></H3>
362
363<P>By popular request, CUPS 1.2 supports LPD-based clients using
364a new mini-daemon that handles LPD requests and passes them on
365to the main server.</P>
366
367<H3><A NAME="USEROPTS">12. User-Defined Printers and Options</A></H3>
368
369<P>CUPS 1.2 includes support for user-defined printers and
370options via a new <tt>lpoptions</tt> command. User-defined
371printers are special instances of the available printers (e.g.
372"printer/instance" or "printer@server/instance") that can have
373their own default options such as media size, resolution, and so
374forth. The <tt>lpoptions</tt> command can also be used to set a
375different default printer queue.</P>
376
377<H3><A NAME="WEB">13. Web Administration Interface</A></H3>
378
379<P>CUPS 1.0 provided a simple class, job, and printer monitoring
380interface for web browsers. CUPS 1.2 replaces this interface
381with an enhanced administration interface that allows you to
382add, modify, delete, configure, and control classes, jobs, and
383printers.</P>
384
385<H2 CLASS="title">Software Using CUPS</H2>
386
387<P>A lot has happened since CUPS 1.0 came out, and many software
388packages are supporting CUPS. We have contributed code to the
389SAMBA team to support CUPS, and parts of that are already
390available in SAMBA 2.0.6 and 2.0.7. With any luck the final
391pieces that provide a complete integration with SAMBA will be
392available in the next release of SAMBA.</P>
393
394<P>Two graphical interfaces have appeared on the scene that use
395CUPS as well. The KUPS project provides a KDE-based interface
396for CUPS and can be found at:</P>
397
398<pre>
399 <A HREF="http://kups.sourceforge.net">http://kups.sourceforge.net</A>
400</pre>
401
402<P>The X Printing Panel (XPP) project provides a graphical
403printing panel for CUPS and can be found at:</P>
404
405<pre>
406 <A HREF="http://www.phy.uni-bayreuth.de/till/xpp">http://www.phy.uni-bayreuth.de/till/xpp/</A>
407</pre>
408
409<P>Numerous other filters, drivers, tutorials, etc. have been
410made available on the CUPS Links web page, available at:</P>
411
412<pre>
413 <A HREF="http://www.cups.org/links.php">http://www.cups.org/links.php</A>
414</pre>
415
416<P>Finally, our own ESP Print Pro software uses CUPS to provide
417drivers for thousands of printers and can be found at:</P>
418
419<pre>
420 <A HREF="http://www.easysw.com/printpro">http://www.easysw.com/printpro</A>
421</pre>
422
423<H2 CLASS="title">Operating Systems Using CUPS</H2>
424
425<P>One of our goals has always been to get as many UNIX/Linux
426distributions using CUPS as possible. Debian is currently
427providing CUPS as part of its stable distribution, and many
428other distributions are considering it in their next
429releases.</P>
430
431<H2 CLASS="title">Summary</H2>
432
433<P>The Common UNIX Printing System provides a modern printing
434interface for UNIX applications that is both flexible and
435user-friendly. The software provides System V and Berkeley
436compatible command-line interfaces to ensure compatibility with
437existing applications. CUPS 1.2 adds many new features that make
438it an even better choice for printing under UNIX.</P>
439
440<H2 CLASS="title">Who to Contact</H2>
441
442<P>For more information on CUPS please contact us at:
443
444<pre>
445 Attn: CUPS Information
446 Easy Software Products
447 44141 Airport View Drive Suite 204
448 Hollywood, Maryland 20636-3142 USA
449
450 +1.301.373.9600
451
452 <A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
453</pre>
454
455<H2 CLASS="title">References</H2>
456
457<DL>
458
459 <DT>IEEE-1387.4</DT>
460
461 <DD>System Administration - Part 4: Printing Interfaces
462 (draft)</DD>
463
464 <DT><A HREF="http://www.pwg.org/ipp/index.html">IETF-IPP</A></DT>
465
466 <DD>Internet Printing Protocol/1.1</DD>
467
468 <DT><A HREF="http://www.astart.com/lprng.html">LPRng</A></DT>
469
470 <DD>An enhanced, extended, and portable implementation
471 of the Berkeley LPR print spooler functionality</DD>
472
473 <DT>Palladin</DT>
474
475 <DD>A printing system developed at the Massachussetts
476 Institute of Technology</DD>
477
478 <DT><A HREF="http://www-usa.iona.com//hyplan/jmason/plp.html">PLP</A></DT>
479
480 <DD>The Portable Line Printer spooler system</DD>
481
482 <DT><A HREF="http://www.ietf.org/rfc/rfc1179.txt">RFC1179</A></DT>
483
484 <DD>Line Printer Daemon Protocol</DD>
485
486 <DT><A HREF="http://www.ietf.org/rfc/rfc2046.txt">RFC2046</A></DT>
487
488 <DD>Multipurpose Internet Mail Extensions (MIME) Part
489 Two: Media Types</DD>
490
491 <DT><A HREF="http://www.ietf.org/rfc/rfc2616.txt">RFC2616</A></DT>
492
493 <DD>Hypertext Transfer Protocol -- HTTP/1.1</DD>
494
495</DL>
496
497<H2 CLASS="title">Trademarks</H2>
498
499<P>The Common UNIX Printing System, CUPS, and the CUPS logo are
500the trademark property of Easy Software Products. All other
501trademarks are the property of their respective owners.</P>
502
503</BODY>
504</HTML>