This
chapter discusses printing, which is a surprisingly complicated
subject. To understand why printing is so complicated, though,
let's think a little bit about what you might want
to print.
First, in the "olden days," we had
line printers and their relatives: daisy-wheel printers, dot-matrix
printers, and other pieces of equipment that generated
typewriter-like output. Printing a simple text file was easy: you
didn't need any special processing; you only needed
some software to shove the file into the printer. If you wanted, you
might add a banner page and do a little simple formatting, but that
was really pretty trivial.
The one area of complexity in the printing system was the
"spooling system," which
had to do several things in addition to force-feeding the printer.
Most printers were (and still are) shared devices. This means that
many people can send jobs to the printer at the same time. There may
also be several printers on which your file gets printed; you may
care which one is used, or you may not. The spooling system needs to
manage all this: receiving data from users, figuring out whether or
not an appropriate printer is in use, and sending the file to the
printer (if it's free) or storing the file somewhere
(if the printer isn't free).
Historical note: why is this called the "spooling
system"? Dave Birnbaum, a Principal Scientist at
Xerox, says:
"SPOOL (Simultaneous Printing Off and On
Line)" It was written for the
early IBM mainframes (of the 3-digit, i.e., 709 kind) and extended to
the early 1401 machines. Output for the printer was sent to the spool
system, which either printed it directly or queued it (on tape) for
later printing (hence the on/off line). There was also a 2nd
generation version where the 1401 would act as the printer controller
for the (by then) 7094. The two were usually connected by a
switchable tape drive that could be driven by either
machine." [There's some controversy
about exactly what the acronym means, but Dave's is
as good as any I've heard.
-- JP]
The first few articles in this chapter, Section 45.2,
Section 45.3, Section 45.4, and Section 45.5, discuss the basic Unix spooling system and
how to work with it as a user.
The next few articles talk about how to format articles for
printing -- not the kind of fancy formatting people think of
nowadays, but simpler things like pagination, margins, and so on, for
text files that are to be sent to a line printer or a printer in
line-printer emulation mode. Section 45.6
describes this kind of simple formatting, and Section 45.7 gets a little more complicated on the same
subject.
Historical note number two: why is the
print spooler called lp or lpr?
It typically spooled text to a line printer, a fast printer that used
a wide head to print an entire line at a time. These printers are
still common in data processing applications, and they can really
fly!
In the mid-1970s, lots of Unix people got excited about
typesetting.
Some typesetters were available that could be connected to computers,
most notably the C/A/T phototypesetter. Programs like
troff and TEX were
developed to format
texts for phototypesetters.
Typesetting tools are still with us, and still very valuable, though
these days they generally work with laser printers via languages like
PostScript. They're discussed in Section 45.10 through Section 45.17, along
with the ramifications of fancy printing on Unix.
Finally, Section 45.19 is about the
netpbm package. It's a useful
tool for people who deal with graphics files.
netpbm converts between different graphics
formats.
-- ML