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.
LPD is also the name given to the network printing protocol by RFC
1179. 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
LPRng(see Section 6.3) 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.
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, GNUlpr offers one with a few minor modifications
that make the user interface much more flexible. The GNUlpr supports command-line option specification with a-o 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 -z option mechanism.
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 Section 3.4) and XPP are perhaps the best. Others exist; tell me about them.