---
name: "psf"
section: "8"
platform: "linux"
package: "netatalk"
version: "2.2.5-2+deb9u1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/psf/8"
---

# psf(8)

PostScript filter

## NAME

psf - PostScript filter

## SYNOPSIS

**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=/usr/lib/netatalk/ofpap:\
    :if=/usr/lib/netatalk/ifpaprev:\
    :tf=/usr/lib/netatalk/tfpaprev:\
    :df=/usr/lib/netatalk/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)](/psorder/1.md), [**printcap**(5)](/printcap/5.md), **lpd**(1), [**mknod**(1)](/mknod/1.md), [**pap**(1)](/pap/1.md).
