]> git.ipfire.org Git - thirdparty/cups.git/blob - doc/help/overview.html
Load cups into easysw/current.
[thirdparty/cups.git] / doc / help / overview.html
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
9 two printing systems - the Berkeley Line Printer Daemon (LPD)
10 [RFC1179] and the AT&amp;T Line Printer system. These printing
11 systems were designed in the 70's for printing text to line
12 printers; vendors have since added varying levels of support for
13 other types of printers.</P>
14
15 <P>Replacements for these printing systems have emerged [LPRng,
16 Palladin, PLP], however none of the replacements change the
17 fundamental capabilities of these systems.</P>
18
19 <P>Over the years several attempts at developing a standard
20 printing interface have been made, including the draft POSIX
21 Printing standard developed by the Institute of Electrical and
22 Electronics Engineers, Inc. (IEEE) [IEEE-1387.4] and Internet
23 Printing Protocol (IPP) developed by the Internet Engineering
24 Task Force (IETF) through the Printer Working Group (PWG)
25 [IETF-IPP]. The POSIX printing standard defines a common set of
26 command-line tools as well as a C interface for printer
27 administration and print jobs, but has been shelved by the
28 IEEE.</P>
29
30 <P>The Internet Printing Protocol defines extensions to the
31 HyperText Transport Protocol 1.1 [RFC2616] to provide support
32 for remote printing services. IPP/1.1 was accepted by the IETF
33 as a proposed standard in ??? of ???. Unlike POSIX Printing, IPP
34 enjoys widespread industry support and has become the standard
35 network printing solution for all operating systems.</P>
36
37 <P>CUPS uses IPP/1.1 to provide a complete, modern printing
38 system for UNIX that can be extended to support new printers,
39 devices, and protocols while providing compatibility with
40 existing UNIX applications. CUPS is free software provided under
41 the terms of the GNU General Public License and GNU Library
42 General 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
47 released in October of 1999. Version 1.1 of CUPS was released in
48 August 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
51 enhancements that have been requested by our users. As with CUPS
52 1.1, CUPS 1.2 will be followed by patch releases that address
53 any problems found with the software. New features will be put
54 in 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
59 print scheduling process that dispatches print jobs, processes
60 administrative commands, provides printer status information to
61 local and remote programs, and informs users as needed. Figure 1
62 shows the basic organization of CUPS.</P>
63
64 <P ALIGN="CENTER"><IMG SRC="../images/cups-block-diagram.gif"
65 WIDTH="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
71 HTTP requests. Besides handling printer requests via IPP POST
72 requests, the scheduler also acts as a full-featured web server
73 for documentation, status monitoring, and administration.</P>
74
75 <P>The scheduler also manages a list of available printers on
76 the LAN and dispatches print jobs as needed using the
77 appropriate 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
96 the Apache server configuration file and defines all of the
97 access control properties for the server.</P>
98
99 <P>The printer and class definition files list the available
100 printer queues and classes. Printer classes are collections of
101 printers. Jobs sent to a class are forwarded to the first
102 available 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
106 automatically detecting the format of a file. These are used by
107 the 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
109 handler 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.
115 The filters are used when a job is dispatched so that an
116 application can send a convenient file format to the printing
117 system which then converts the document into a printable format
118 as needed. Each filter has a relative cost associated with it,
119 and the filtering algorithm chooses the set of filters that will
120 convert 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
124 just PostScript printers. There is one PPD file for each
125 printer. PPD files for non-PostScript printers define additional
126 filters through <tt>cupsFilter</tt> attributes to support
127 printer drivers.</P>
128
129 <H3>CUPS API</H3>
130
131 <P>The CUPS API contains CUPS-specific convenience functions for
132 queuing print jobs, getting printer information, accessing
133 resources via HTTP and IPP, and manipulating PPD files. Unlike
134 the rest of CUPS, the CUPS API is provided under the terms of
135 the 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
140 interfaces for submitting jobs and checking the printer status.
141 The <tt>lpstat</tt> and <tt>lpc status</tt> commands
142 also show network printers ("printer@server") when printer
143 browsing is enabled.</P>
144
145 <P>The System V administation commands are supplied for managing
146 printers and classes. The Berkeley printer administration tool
147 (<tt>lpc</tt>) is only supported in a "read-only' mode to
148 check the current status of the printer queues and
149 scheduler.</P>
150
151 <H3>Filters</H3>
152
153 <P>A filter program reads from the standard input or from a file
154 if a filename is supplied. All filters must support a common set
155 of options including printer name, job ID, username, job title,
156 number of copies, and job options. All output is sent to the
157 standard output.</P>
158
159 <P>Filters are provided for many file formats and include image
160 file and PostScript raster filters that support non-PostScript
161 printers. Multiple filters are run in parallel to produce the
162 required output format.</P>
163
164 <P>The PostScript raster filter is based on the ESP Ghostscript
165 core. Instead of using the Ghostscript printer drivers, the CUPS
166 filter uses a generic CUPS raster printer driver and
167 CUPS-compliant front-end to support any kind of raster printer.
168 This allows the same printer driver filter to be used for
169 printing 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
176 large images, doing colorspace conversion and color management,
177 scaling images for printing, and managing raster page streams.
178 It is used by the CUPS image file filters, the PostScript RIP,
179 and all raster printers drivers.</P>
180
181 <H3>Backends</H3>
182
183 <P>A backend program is a special filter that sends print data
184 to a device or network connection. Backends for parallel,
185 serial, USB, LPD, IPP, and AppSocket (JetDirect) connections are
186 provided 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
190 Windows.</P>
191
192 <H2 CLASS="title">Network Printing</H2>
193
194 <P>Traditionally, network printing has been one of the hardest
195 things to get working under UNIX. One reason is because each
196 vendor added their own extensions to the LPD protocol (the
197 previous standard for network printing), making cross-platform
198 printing difficult if not impossible.</P>
199
200 <P>Another reason is that you have to administer every network
201 printer on every client machine. In some cases you can "clone'
202 the printer configuration from a "master' client to each of the
203 others, but even that can be time-consuming and error-prone.
204 Something better is needed.</P>
205
206 <P>CUPS provides "printer browsing", which allows clients to
207 automatically see and use printers from any server on a LAN.
208 This means that you only need to configure the server and the
209 clients will automatically see the printers and classes on
210 it.</P>
211
212 <P>In addition, CUPS can automatically merge multiple identical
213 network printers into "implicit classes". This allows clients to
214 send jobs to the implicit class and have them print on the first
215 available printer or server. In addition, failsafe and
216 load-balancing functions are enabled simply by defining the same
217 printer 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
256 list of available devices for CUPS clients. This allows
257 administration interfaces to query the CUPS scheduler for a list
258 of available devices, automatically configure printers if the
259 device identification information is available, and present the
260 user with a list of available devices rather than relying on the
261 user to know what devices are configured on the system.</P>
262
263 <P>The new release also includes a backend for USB printers
264 under *BSD and Linux. Support for USB under Solaris 8 will be
265 provided 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
270 and end of a job. Banner pages may be of any file format and
271 support variable substitution for job titles, usernames, etc.
272 Default banner pages are associated with each printer and can be
273 overridden 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
278 authenticating access to the printing system. Unlike Basic
279 authentication, Digest authentication does not send passwords
280 "in the clear' so it is more difficult to gain unauthorized
281 access to your system.</P>
282
283 <P>CUPS 1.2 implements Digest authentication using a special MD5
284 password file instead of the UNIX password file. This file is
285 managed 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")
290 features to make using CUPS on large LANs and WANs easier. You
291 can now poll a remote server for printer information and relay
292 it to the LAN as well as restrict what printer information is
293 processed (e.g. to "hide" servers, domains, or networks that you
294 don'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
299 the Filesystem Hierarchy Standard (FHS), version 2.0. This
300 should make integration into existing Linux and *BSD
301 distributions 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,
306 including a completely rewritten administrators manual, a new
307 programmers manual, and an IPP implementation reference
308 manual.</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
313 printers. As with the HP PCL drivers, the EPSON drivers don't
314 necessarily provide the best possible output for each printer
315 but should provide adequate printing quality for general
316 day-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
321 filters. The image filters have been upgraded to support Windows
322 BMP and Alias PIX files.</P>
323
324 <P>The PostScript filter is now based off ESP Ghostscript. The
325 new filter provides much better performance with
326 higher-resolution printers and supports all Level 3 PostScript
327 language features.</P>
328
329 <P>The new PDF filter is based off the excellent Xpdf software
330 from Derek Noonburg and supports automatic page scaling. The new
331 filter is a faster, smaller, more reliable replacement for the
332 GNU Ghostscript PDF filtering that was used in CUPS 1.0.</P>
333
334 <P>The new text filter now supports bidirectional text and can
335 embed 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
340 support. CUPS 1.1 implements all of the required IPP/1.1
341 operations and attributes and most of the optional ones. The
342 optional Create-Job and Send-File operations are now
343 implemented, allowing for better System V printing system
344 compatibility (one job ID per <tt>lp</tt> command) and support
345 for 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
350 preserved even after a reboot, a feature that was sorely missing
351 from CUPS 1.0.</P>
352
353 <P>In addition, CUPS 1.2 allows you to keep job information
354 after the job has printed. The basic post-job persistence mode
355 provides a job history (number of pages printed, time job was
356 printed, etc.) but does not preserve the actual job files. This
357 can be changed to discard all information after a job is printed
358 or keep the job files after printing so you can reprint a job at
359 some 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
364 a new mini-daemon that handles LPD requests and passes them on
365 to 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
370 options via a new <tt>lpoptions</tt> command. User-defined
371 printers are special instances of the available printers (e.g.
372 "printer/instance" or "printer@server/instance") that can have
373 their own default options such as media size, resolution, and so
374 forth. The <tt>lpoptions</tt> command can also be used to set a
375 different 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
380 interface for web browsers. CUPS 1.2 replaces this interface
381 with an enhanced administration interface that allows you to
382 add, modify, delete, configure, and control classes, jobs, and
383 printers.</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
388 packages are supporting CUPS. We have contributed code to the
389 SAMBA team to support CUPS, and parts of that are already
390 available in SAMBA 2.0.6 and 2.0.7. With any luck the final
391 pieces that provide a complete integration with SAMBA will be
392 available in the next release of SAMBA.</P>
393
394 <P>Two graphical interfaces have appeared on the scene that use
395 CUPS as well. The KUPS project provides a KDE-based interface
396 for 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
403 printing 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
410 made 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
417 drivers 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
426 distributions using CUPS as possible. Debian is currently
427 providing CUPS as part of its stable distribution, and many
428 other distributions are considering it in their next
429 releases.</P>
430
431 <H2 CLASS="title">Summary</H2>
432
433 <P>The Common UNIX Printing System provides a modern printing
434 interface for UNIX applications that is both flexible and
435 user-friendly. The software provides System V and Berkeley
436 compatible command-line interfaces to ensure compatibility with
437 existing applications. CUPS 1.2 adds many new features that make
438 it 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
500 the trademark property of Easy Software Products. All other
501 trademarks are the property of their respective owners.</P>
502
503 </BODY>
504 </HTML>