Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > by-pkgid > 45aa1ebd55c7943eeb690b326c636008 > files > 47

foomatic-filters-3.0-0.beta2.20030403.2.2mdk.ppc.rpm

<HTML
><HEAD
><TITLE
>Spooling software</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.49"><LINK
REL="HOME"
TITLE="The Printing HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Supported Printers"
HREF="printers.html"><LINK
REL="NEXT"
TITLE="How it all works"
HREF="background.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Printing HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="printers.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="background.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="SPOOLERS"
>6. Spooling software</A
></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, most 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.  I
   describe them all below; read the descriptions and make your own
   choice.  PDQ is the simplest modern system with a GUI; it is
   suitable for both basic home users and (in a hybrid pdq/lprng
   setup) people in many larger environments.  For business
   environments with mainly networked Postscript printers, a front-end
   program like GPR with LPRng is a good alternative; it handles
   PPD options directly and has a slightly nicer interface.  In other
   cases CUPS is a good option; it too has excellent Postscript
   printer support, and offers IPP support, a web interface, and a
   number of other features.
  </P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="LPD-WHICH-SPOOLER"
>6.1. LPD</A
></H2
><A
NAME="AEN1460"
></A
><A
NAME="AEN1463"
></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
>    LPRng (see <A
HREF="spoolers.html#LPRNG-WHICH-SPOOLER"
>Section 6.3</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.
   </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, VA Linux offers one with a few minor modifications
    that make the user interface much more flexible.  The <A
HREF="http://sourceforge.net/project/?group_id=3800"
TARGET="_top"
>SourceForge
    LPD</A
> 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
><DIV
CLASS="SIMPLESECT"
><H3
CLASS="SIMPLESECT"
><A
NAME="LPD-FRONT-ENDS"
>6.1.1. LPD front-ends</A
></H3
><P
>     If you go with LPD, the best way to use it is via a front-end.
     There are several to chose from; GPR (see <A
HREF="how.html#HOW-WITH-GUI-TOOLS"
>Section 3.3</A
>) and XPDQ (see <A
HREF="spoolers.html#PDQ-WHICH-SPOOLER"
>Section 6.2</A
>) are perhaps the two best.  Others
     exist; tell me about them.
    </P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="PDQ-WHICH-SPOOLER"
>6.2. PDQ</A
></H2
><A
NAME="AEN1482"
></A
><A
NAME="AEN1484"
></A
><A
NAME="AEN1487"
></A
><P
>    <A
HREF="http://feynman.tam.uiuc.edu/pdq/"
TARGET="_top"
>PDQ</A
> 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 (see
    <A
HREF="spoolers.html#SNAPSHOT-XPDQ-OPTIONS"
>Figure 9</A
>).
   </P
><DIV
CLASS="FIGURE"
><P
><B
>Figure 8. XPDQ Main Window</B
></P
><P
><IMG
SRC="snapshot-xpdq-main.gif"></P
></DIV
><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
>    This is what I now use; I've written driver spec files for my
    printers, and there are several included with the distribution, so
    there are plenty of examples to base yours on.  I've also written
    a few tools to automate driver spec generation to help the rest of
    you.
   </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&#8212;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
>    If you have many users, many printers, or anything else complex
    going on, I recommend using PDQ as a front-end to LPD-protocol
    based network printing (you can print via the lpd protocol to the
    local machine).  In most such situations, rather than using the
    traditional BSD lpd as the back-end, I recommend LPRng:
   </P
><DIV
CLASS="FIGURE"
><A
NAME="SNAPSHOT-XPDQ-OPTIONS"
></A
><P
><B
>Figure 9. XPDQ Driver Options Window</B
></P
><P
><IMG
SRC="snapshot-xpdq-options.gif"></P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="LPRNG-WHICH-SPOOLER"
>6.3. LPRng</A
></H2
><A
NAME="AEN1504"
></A
><A
NAME="AEN1506"
></A
><P
>    Some GNU/Linux vendors (including Caldera) 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.  If you'd like more information on LPRng, check out the
    <A
HREF="http://www.astart.com/lprng/LPRng.html"
TARGET="_top"
>LPRng Web
    Page</A
>.  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 my 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"
>6.4. PPR</A
></H2
><A
NAME="AEN1516"
></A
><A
NAME="AEN1518"
></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
>    I only recently found out about PPR; I don't know of anyone who
    has tried it.  It was written by, and is in use at, Trinity
    College.  The license is BSD-style; free for all use but credit is
    due.
   </P
><P
>    According to the documentation, it's somewhat experimental.
    Malformed Postscript jobs won't print; instead they bounce, and
    it's up to the user to fix the Postscript.  This may make it
    unsuitable for some environments, although most users generate
    Postscript with a small handful of well-characterized Postscript
    generators, so it probably wouldn't be that big an issue.
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CUPS-WHICH-SPOOLER"
>6.5. CUPS</A
></H2
><A
NAME="AEN1527"
></A
><A
NAME="AEN1529"
></A
><A
NAME="AEN1533"
></A
><A
NAME="AEN1536"
></A
><P
>    <A
NAME="AEN1540"
></A
>
    <A
NAME="AEN1542"
></A
>
    One interesting newcomer on the scene is <A
HREF="http://www.cups.org/"
TARGET="_top"
>CUPS</A
>, an implementation of the
    Internet Printing Protocol (IPP), an HTTP-like RFC standard
    replacement protocol for the venerable (and klunky) LPD protocol.
    The implementation of CUPS has been driven by Michael Sweet of
    Easy Software Products; CUPS is distributed under the GPL.
   </P
><P
>   <A
NAME="AEN1547"
></A
>
    I've finally done some work with CUPS, and it does 
    work as advertised.  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.  Since it is so new, however, it does have a
    number of quirks, and it is hard to recommend for large or secure
    installations at this time (as of version 1.1).  It is a fine
    solution, however, for smaller installations or especially larger
    installatons with trusted users.
   </P
><P
>    Like other systems, CUPS can be used with most existing drivers.
    Unfortunately, it's a bit tricky to configure an arbitrary driver
    for use with CUPS&#8212;at least if you want all the options to
    work&#8212;so it's best to find a preexisting PPD file and filter
    script to make your driver go.  There are at least four sets of
    drivers which you can use with CUPS:
    <P
></P
><DL
><DT
><A
HREF="http://www.linuxprinting.org/foomatic.html"
TARGET="_top"
>Foomatic</A
></DT
><DD
><A
NAME="AEN1556"
></A
><A
NAME="AEN1559"
></A
><P
>My web-based CUPS-O-Matic system 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"
>cupsomatic</B
>.  CUPS-O-Matic uses free
	software drivers.  At the moment there is support for a rather
	large number of printers in this system, and both XPP and
	QtCUPS (graphical front-ends for CUPS users) have added
	special support for several of the many styles of adjustments
	useful with Foomatic's free drivers but not supported by CUPS
	itself.  Foomatic forms a basis for non-Postscript printer
	support in a number of GNU/Linux distributions.
       </P
></DD
><DT
><A
HREF="http://cups.sourceforge.net/"
TARGET="_top"
>CUPS Drivers
                 and KUPS</A
></DT
><DD
><P
>The CUPS Drivers project is accumulating PPD files
	useable with either Postscript printers or the backend filter
	<B
CLASS="COMMAND"
>ps2gs2raw</B
>.  These PPD files use free
	software drivers.  KUPS is a companion setup program.  The
	driver project has mostly stalled with the advent of Foomatic,
	but KUPS is a nifty setup tool shipped standard in a number of
	distributions.
       </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.  <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.  These drivers are
	reputedly not terribly good, but they are somewhat more
	comprehensive than the coverage from free software, and even
	mediocre quality is preferable to a paperweight.  The package
	includes graphical front-end tools which are reputedly not as
	good as XPP or QtCUPS.
       </P
></DD
></DL
>
   </P
><P
>    The third-party program <B
CLASS="COMMAND"
><A
HREF="http://cups.sourceforge.net/xpp/"
TARGET="_top"
>XPP</A
></B
> (see <A
HREF="how.html#SNAPSHOT-XPP-MAIN"
>Figure 5</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="how.html#SNAPSHOT-XPP-OPTIONS"
>Figure 6</A
>).  For information on using
    XPP, see <A
HREF="how.html#XPP-SECT"
>Section 3.3.3</A
>.
   </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="printers.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="background.html"
>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
>