old-www/HOWTO/Printing-HOWTO/x986.htm

574 lines
15 KiB
HTML

<HTML
><HEAD
><TITLE
>Spooling software</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
HREF="t1.htm"><LINK
REL="PREVIOUS"
TITLE="Supported Printers"
HREF="x333.htm"><LINK
REL="NEXT"
TITLE="How it all works"
HREF="x1144.htm"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x333.htm"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1144.htm"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="spoolers"
></A
>Spooling software</H1
><P
>Until recently, the choice for free software users was simple -
everyone ran the same old lpd lifted mostly verbatim out of BSD's
Net-2 code. Even today, some vendors ship this software. But this
is beginning to change. SVR4-like systems including Sun's Solaris
come with a completely different print spooling package, centered
around lpsched.</P
><P
>Today, there are a number of good systems to chose from. They are
all described below; read the descriptions and make your own
choice. CUPS is a good option and recommended for most users; it has excellent Postscript
printer support, offers IPP support, a web interface, and a
number of other features.
For business environments with mainly networked Postscript printers, a front-end
program like GPR with LPRng is another option; it handles
PPD options directly and has a nice interface.</P
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="cups-which-spooler"
></A
>CUPS</H2
><A
NAME="AEN992"
></A
><A
NAME="AEN994"
></A
><A
NAME="AEN998"
></A
><A
NAME="AEN1001"
></A
><P
>&#13;<A
NAME="AEN1004"
></A
>
<A
NAME="AEN1006"
></A
>
<A
HREF="http://www.cups.org/"
TARGET="_top"
>CUPS</A
> has become the standard printing system in most distributions today. What makes CUPS different from the rest ? CUPS is an implementation of the Internet Printing Protocol (IPP), a new standard intended to solve some of the deficiencies of the old LPD protocol. CUPS also supports LPD, SMB and AppSocket (JetDirect) with reduced functionality. The implementation of CUPS has been driven by Michael Sweet of
Easy Software Products; CUPS is distributed under the GPL. Being a new protocol, the IPP has a number of advantages on the ancient LPD protocol:
<P
></P
><UL
><LI
><P
>the scheduler is a HTTP 1.1 web server and also delivers a web interface</P
></LI
><LI
><P
>printer options, you can even ask the IPP device what options and document formats it supports.</P
></LI
><LI
><P
>access control which restricts print jobs, job controls, and system administration commands coming from and to specified computers and printers. Like Apache, you can control access to CUPS using Allow and Deny directives.</P
></LI
><LI
><P
>proxy support (since IPP uses HTTP)</P
></LI
><LI
><P
>encryption support</P
></LI
><LI
><P
></P
></LI
></UL
>
Today, all major operating system vendors actively support IPP, as well as the major printer vendors. IPP is a standard printing protocol in Windows 2000 (IIS needs to be installed) which may be a better option for free software users than the proprietary SMB protocol. However, on Windows 2000 automatic printer driver downloading only works with SMB and not with IPP, this may be a reason for administrators with a lot of Windows clients to choose for SMB printer sharing using Samba and CUPS.</P
><P
>&#13;<A
NAME="AEN1024"
></A
>
There are a number of very good features in
it, including sensible option handling; web, GUI, and command-line
interfaces; and a mime-based filtering system with strong support
for Postscript.</P
><P
>There are several sets of PPDs which you can use with CUPS:<P
></P
><DIV
CLASS="variablelist"
><DL
><DT
>Built-in</DT
><DD
><A
NAME="AEN1032"
></A
><P
>The default CUPS installation contains generic PPDs for 9-pin and 24-pin Epson matrix printers, Epson Stylus Color, Stylus Photo printers, HP LaserJet, DeskJet printers and Dymo Label printers. These will enable you to print to a lot of printer models, but will not give you access to specific capacities of the models</P
></DD
><DT
><A
HREF="http://www.linuxprinting.org/foomatic.html"
TARGET="_top"
>Foomatic</A
></DT
><DD
><A
NAME="AEN1040"
></A
><A
NAME="AEN1043"
></A
><P
>Foomatic can generate a suitable
PPD for use with any printer driver that has full details
entered in the linuxprinting.org database. The PPD gets used
together with a backend script named <B
CLASS="command"
>foomatic-rip</B
>. foomatic-rip uses free
software drivers. At the moment there is support for a rather
large number of printers in this system. Foomatic forms a basis for non-Postscript printer
support in most GNU/Linux distributions. CUPS and Foomatic are becoming quite popular and this is currently the recommended printing system for most situations.</P
></DD
><DT
>Postscript PPDs</DT
><DD
><P
>CUPS can use vendor-supplied PPD files for Postscript
printers directly. Often these come with the Windows drivers
for a printer, or can be found on the printer vendor's
website. If you have a choice between a driver for Windows 9x and Windows NT/W2K, than select the driver for Windows NT. <A
HREF="http://www.adobe.com/products/printerdrivers/winppd.html"
TARGET="_top"
>Adobe</A
> also distributes PPD files for many Postscript
printers.</P
></DD
><DT
>ESP Print Pro</DT
><DD
><P
><A
HREF="http://www.easysw.com/"
TARGET="_top"
>Easy Software
Products, Inc.</A
> sells CUPS bundled with a collection of
proprietary drivers. Although they are not free software,
they do drive many common printers. The bundle is somewhat
expensive measured against the price of a single supported
printer, but it certainly has a place. The package
includes graphical front-end tools.</P
></DD
><DT
>Gimp-Print</DT
><DD
><P
>The <A
HREF="http://gimp-print.sourceforge.net/"
TARGET="_top"
>Gimp-Print</A
> drivers are high quality drivers for Canon, Epson, Lexmark, and PCL printers for use with Ghostscript, CUPS, Foomatic, and the Gimp.</P
></DD
><DT
><A
HREF="http://www-124.ibm.com/developerworks/oss/linux/projects/omni/"
TARGET="_top"
>OMNI</A
></DT
><DD
><A
NAME="AEN1066"
></A
><P
>Omni is a package made by IBM, now containing support for more than 450 printers. The OMNI printer driver model is distributed by IBM under LGPL License.</P
></DD
><DT
><A
HREF="http://hpinkjet.sourceforge.net/"
TARGET="_top"
>HPIJS</A
></DT
><DD
><A
NAME="AEN1074"
></A
><P
>HPIJS supports around 150 of HP's own printers at excellent print quality now (currently only via the Foomatic path). As of Version 1.0.1 , the "hp Product Only" clause has been removed from the license and the drivers are distributed with a BSD license.</P
></DD
></DL
></DIV
></P
><P
>The third-party program <B
CLASS="command"
><A
HREF="http://cups.sourceforge.net/xpp/"
TARGET="_top"
>XPP</A
></B
> (see <A
HREF="x102.htm#snapshot-xpp-main"
>Figure 4</A
>) offers a
very nice graphical interface to the user functionality of CUPS,
including an marvelous interface to print-time options (shown in <A
HREF="x102.htm#snapshot-xpp-options"
>Figure 5</A
>). For information on using
XPP, see <A
HREF="x102.htm#xpp-sect"
>the Section called <I
>XPP</I
></A
>.</P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="lpd-which-spooler"
></A
>LPD</H2
><A
NAME="AEN1086"
></A
><A
NAME="AEN1089"
></A
><P
>LPD, the original BSD Unix Line Printer Daemon, has been the
standard on Unix for years. It is available for every style of
Unix, and offers a rather minimal feature set derived from the
needs of timesharing-era computing. Despite this somewhat
peculiar history, it is still useful today as a basic print
spooler. To be really useful with modern printer, a good deal of
extra work is needed in the form of companion filter scripts and
front-end programs. But these exist, and it does all work.</P
><P
>LPD is also the name given to the network printing protocol by <A
HREF="http://www.ietf.org/rfc/rfc1179.txt"
TARGET="_top"
>RFC
1179</A
>. This network protocol is spoken not only by
the LPD daemon itself, but by essentially every networked print
server, networked printer, and every other print spooler out
there; LPD is the least common denominator of standards-based
network printing.</P
><P
><A
HREF="http://www.lprng.org"
TARGET="_top"
>LPRng</A
>(see <A
HREF="x986.htm#lprng-which-spooler"
>the Section called <I
>LPRng</I
></A
>) is a far better
implementation of the basic LPD design than the regular one; if
you must use LPD, consider using LPRng instead. There is far less
voodoo involved in making it do what you want, and what voodoo
there is is well documented. LPRng is essentially an enhanced LPD implementation with better security and extra features.</P
><P
>There are a large number of LPD sources floating around in the
world. Arguably, some strain of BSD Unix is probably the official
owner, but everyone implements changes willy-nilly, and they all
cross-pollinate in unknown ways, such that it is difficult to say
with certainty exactly which LPD you might have. Of the readily
available LPDs, <A
HREF="http://sourceforge.net/projects/lpr/"
TARGET="_top"
>GNUlpr</A
> offers one with a few minor modifications
that make the user interface much more flexible. The GNUlpr supports command-line option specification with a<TT
CLASS="option"
>-o</TT
> flag; options are then passed through to
filters. This is similar to the features offered by a number of
traditional Unix vendors, and similar to (although incompatible
with) LPRng's <TT
CLASS="option"
>-z</TT
> option mechanism.</P
><P
>If you go with LPD, the best way to use it is via a front-end.
There are several to chose from; KDEPrint, GPR (see <A
HREF="x102.htm#how-with-gui-tools"
>the Section called <I
>GUI Printing Tools</I
></A
>) and XPP are perhaps the best. Others exist; tell me about them.</P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="lprng-which-spooler"
></A
>LPRng</H2
><A
NAME="AEN1106"
></A
><A
NAME="AEN1108"
></A
><P
>Some GNU/Linux vendors provide LPRng, a far less
ancient LPD print spooling implementation. LPRng is far easier to
administer for large installations (read: more than one printer,
any serial printers, or any peculiar non-lpd network printers) and
has a less frightfully haphazard codebase than does stock lpd. It
can even honestly claim to be secure - there are no SUID binaries,
and it supports authentication via PGP or Kerberos.</P
><P
>LPRng also includes some example setups for common network
printers - HP LaserJets, mainly - that include some accounting
abilities. LPRng uses more or less the same basic filter model
as does BSD lpd, so the <A
HREF="http://www.linuxprinting.org/lpd-doc.html"
TARGET="_top"
>LPD
support</A
> offered by the linuxprinting.org website applies to LPRng as well.
This can help you effectively use free software drivers for many
printers.</P
><P
>LPRng is distributed under either the GPL or an Artistic license.</P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="ppr-which-spooler"
></A
>PPR</H2
><A
NAME="AEN1117"
></A
><A
NAME="AEN1119"
></A
><P
><A
HREF="http://ppr.trincoll.edu/"
TARGET="_top"
>PPR</A
> is a
Postscript-centric spooler which includes a rudimentary Postscript
parsing ability from which it derives several nice features. It
includes good accounting capabilities, good support for Appletalk,
SMB, and LPD clients, and much better error handling than lpd.
PPR, like every other spooler here, can call Ghostscript to handle
non-Postscript printers.</P
><P
>PPR was written by, and is in use at, Trinity
College. The license is BSD-style; free for all use but credit is
due.</P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="others-which-spooler"
></A
>Others</H2
><DIV
CLASS="sect3"
><H3
CLASS="sect3"
><A
NAME="AEN1127"
></A
>PDQ</H3
><P
> PDQ stands for "Print, Don't Queue", and the way it works reflects this design. PDQ is a non-daemon-centric print system which has a built-in, and sensible, driver configuration syntax. This includes the ability to declare printing options, and a GUI or command line tool for users to specify these options with; users get a nice dialog box in which to specify resolution, duplexing, paper type, etc.</P
><P
> Running all of the filters as the user has a number of advantages: the security problems possible from Postscript are mostly gone, multi-file LaTeX jobs can be printed effectively as dvi files, and so forth.</P
><P
> PDQ is not without flaws: most notably it processes the entire job before sending it to the printer. This means that, for large jobs, PDQ may simply be impractical—you can end up with hundreds of megs being copied back and forth on your disk. Even worse, for slow drivers like the better quality inkjet drivers, the job will not start printing until Ghostscript and the driver have finished processing. This may be many minutes after submission.</P
><P
>There's a real place for PDQ; it has a simple design that doesn't
subtract user control. And the normal control path crosses no
security boundaries, so it can't have the classes of security bug
people are always finding in other systems. And to top it off, it's
small.</P
><P
>However there is no active development done on PDQ. A new maintainer would be most welcome.</P
></DIV
><DIV
CLASS="sect3"
><H3
CLASS="sect3"
><A
NAME="AEN1134"
></A
>GNUlpr</H3
><P
>GNUlpr began its life in some work that HP sponsored VA Linux to do. Unfortunately, GNUlpr is now pretty much dead.</P
></DIV
><DIV
CLASS="sect3"
><H3
CLASS="sect3"
><A
NAME="AEN1137"
></A
>CPS</H3
><P
>The <A
HREF="http://www.tww.cx/cps.php"
TARGET="_top"
>Coherent Printing System</A
> is a set of Perl scripts called "lpr", "lpd", "lprm", and "lpq". These replace the programs of the same name which come with many Linux systems.</P
></DIV
><DIV
CLASS="sect3"
><H3
CLASS="sect3"
><A
NAME="AEN1141"
></A
>CEPS</H3
><P
>The Cisco Enterprise Print System was developed by Damian Ivereigh when he was a sysadmin at Cisco. He did more than he was hired to do, he developed a new printing system to improve the administrative hassle. Cisco authorized the release of the software for free under the GNU General Public License. Installing CEPS will however only pay off at large organisations.</P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x333.htm"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.htm"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1144.htm"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Supported Printers</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>How it all works</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>