psf - PostScript filter
psf [ -n name ] [ -h host ] [ -w width ] [ -l length ] [ -i indent ] [ -c ]
psf is an lpd filter for PostScript printing. psf interprets the name it was called with
to determine what filters to invoke. First, if the string ``pap'' appears anywhere in the
name, psf invokes pap to talk to a printer via AppleTalk. Next, if the string ``rev''
appears, psf invokes psorder to reverse the pages of the job. Finally, if psf was called
with a filter's name as the leading string, it invokes that filter. If there is no filter
to run, psf examines the magic number of the input, and if the input is not PostScript,
converts it to PostScript.
In the default configuration, psf supports two kludges. The first causes psf to check its
name for the letter `m'. If this letter is found and accounting is turned on, psf calls
pap twice, once to get an initial page count and to print the job, and another time to get
a final page count. This is a work-around for bugs in a variety of PAP implementions that
cause printers to never properly close the PAP output file. A notable example is any
printer by Hewlett-Packard.
The second kludge causes psf to examine its name for the letter `w'. If this letter is
found and accounting is turned on, psf calls pap with the -w flag. This flag causes pap
to wait until the printer's status contains the string `idle'. Once this string is found,
the job is printed as normal. This kludge is a work-around for printers, notably Hewlett-
Packard's LaserJet IV, which will report a page count while a previous jobs is still
The sample printcap entry below invokes psf to print text files, PostScript files, troff's
C/A/T output, and TeX's DVI output, to an AppleTalk connected LaserWriter Plus. Since the
LaserWriter Plus stacks pages in descending order, we reverse the pages and print the
burst page last.
laser|lp|LaserWriter Plus on AppleTalk:\
Note that if the host in question spools to more than one AppleTalk printer, /dev/null
should not be used for the lp capability. Instead, a null device should be created with
mknod for each printer, as has been done above.
Finally, there is a file in the spool directory, /var/spool/lpd/laser, called .paprc,
which pap reads for the AppleTalk name of the printer.
psorder(1), printcap(5), lpd(8), mknod(8), pap(8).
netatalk 1.2 17 Dec 1991 PSF(8)