psf

8 22 Dec 1999 @NETATALK_VERSION@

psf

PostScript filter

          psf

          -n name

          -h host

          -w width

          -l length

          -i indent

          -c

## Description

`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.

## KLUDGE

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 printing.

## Example

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:\
        :sd=/var/spool/lpd/laser:\
        :lp=/var/spool/lpd/laser/null:\
        :lf=/var/log/lpd-errs:pw#80:hl:\
        :of=ofpap:\
        :if=ifpaprev:\
        :tf=tfpaprev:\
        :df=dfpaprev:

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.

## See Also

psorder

1,

printcap

5,

lpd

1,

mknod

1,

pap

1.