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