PS2FAX(8)

🌸 NAME 🌸

ps2fax — image POSTSCRIPT® for facsimile transmission by HylaFAX

Ok so quick vibe check: this is the little script that turns your POSTSCRIPT® into something a fax machine can actually read. 💖


✨ SYNOPSIS ✨

/var/spool/hylafax/bin/ps2fax [ options ] [ files...  ]

🦋 DESCRIPTION 🦋

So here's the tea, bestie: ps2fax takes POSTSCRIPT input and generates a TIFF Class F image file that's suitable for facsimile transmission. It's usually invoked by the HylaFAX scheduler process, faxq(8). 🫶

On Silicon Graphics' IRIX systems, this application is based on Adobe's Display POSTSCRIPT software. On other machines POSTSCRIPT imaging is typically done using the freely available Ghostscript software. Different machines, different lore, same energy.

Plot twist: ps2fax is actually a link (symbolic or otherwise) to the script appropriate for the POSTSCRIPT imaging tool. The link is setup when the faxsetup(8) script is run to configure a HylaFAX server machine for use. So it's giving "I contain multitudes." 👑

Input files containing POSTSCRIPT may be specified on the command line. If none are given, then ps2fax will read from standard input. No files? No problem, it'll just take it from stdin.

By default, ps2fax will generate a 98 line/inch output document whose page width is 1728 pixels and page length is 297 mm (a standard A4 page at low resolution). Horizontal resolution is always 204 dpi — that part is non-negotiable, it's literally always that. Command line options may be used to select alternate vertical resolution and page dimensions, so you do have some wiggle room. 💅

If no filename is given, ps2fax writes its output to a file named ps.fax; the -o option can be used to specify an alternate filename. Default name, iconic. Custom name, also iconic.

By default, output is compressed using the standard Group 3 1D-encoding scheme, with EOL codes padded to byte boundaries. If the -2 option is specified, output is encoded with the optional Group 3 2D-encoding scheme (EOL codes are still padded to byte boundaries). Padding stays, periodt.

This script can modify outgoing facsimile, such as watermarking, To do this create a shell script etc/FaxModify in the spooling area that alters the document. ✨ Custom glow-up for your faxes, we love to see it.

Note that bin/ps2fax is usually just a link to a shell script that invokes the appropriate POSTSCRIPT RIP to do the work.

🎀 OPTIONS 🎀

The following operations are recognized:

  • -1 — Write Group 3 1D-encoded data to the output file.
  • -2 — Write Group 3 2D-encoded data to the output file.
  • -3 — Write Group 4 MMR-encoded data to the output file.
  • -m pages — Set the maximum number of pages that are permitted in the output file. If more pages are present in the input document then abort processing. It will literally just stop. 🛑
  • -o file — Write output to the specified file instead of the default ps.fax filename.
  • -w width — Set the output page width, in pixels. By default, pages are 1728 pixels wide.
  • -l length — Set the output page length in millimeters. By default, pages are 297 millimeters long.
  • -r vres — Set the vertical resolution, in lines/inch, at which to image the POSTSCRIPT.

🌈 RUNTIME ENVIRONMENT 🌈

Before user-supplied POSTSCRIPT is passed to the POSTSCRIPT interpreter, a limited number of operators are defined. These operators are operators commonly found in a LaserWriter printer and (sometimes) generated by Macintosh-based applications. So they're the classics — your doc won't be out here confused. 💜

The default Display POSTSCRIPT-based execution environment includes support for the following fonts:

AvantGarde-Book           Helvetica-Bold                  Palatino-BoldItalic
AvantGarde-BookOblique    Helvetica-BoldOblique           Palatino-Italic
AvantGarde-Demi           Helvetica-Narrow                Palatino-Roman
AvantGarde-DemiOblique    Helvetica-Narrow-Bold           StoneSerif
Bookman-Demi              Helvetica-Narrow-BoldOblique    Symbol
Bookman-DemiItalic        Helvetica-Narrow-Oblique        Tekton
Bookman-Light             Helvetica-Oblique               Times-Bold
Bookman-LightItalic       Lithos-Bold                     Times-BoldItalic
Courier                   NewCenturySchlbk-Bold           Times-Italic
Courier-Bold              NewCenturySchlbk-BoldItalic     Times-Roman
Courier-BoldOblique       NewCenturySchlbk-Italic         ZapfChancery-MediumItalic
Courier-Oblique           NewCenturySchlbk-Roman          ZapfDingbats
Helvetica                 Palatino-Bold

Note that this is the same set of fonts supported by the DPS extension to the X server. Same fonts, different venue. 💫

The default Ghostscript-based environment is more uncertain; consult the Ghostscript documentation for information on what fonts are available. Ngl, that one's giving mystery. 👻


🍓 FILES 🍓

  • /var/spool/hylafax/etc/dpsprinter.ps — POSTSCRIPT code read at startup for DPS
  • /usr/lib/DPS/default.dps_vm — startup VM file for DPS
  • /usr/lib/DPS/outline — Type 1 fonts for DPS
  • /usr/lib/DPS/prebuilt — prebuilt versions of fonts for DPS

💀 BUGS 💀

Ok bestie, listen up, these are the messy parts:

  • Output from the Display POSTSCRIPT version of this command is encoded according to the Display POSTSCRIPT binary encoding protocol.
  • No prebuilt bitmap fonts are currently available for the DPS-based imager; this would greatly improve legibility at low resolutions, as the rendering of outline fonts at 98 lpi is particularly poor. 98 lpi outline fonts are lowkey struggling, fr fr. 😭
  • Both DPS- and Ghostscript-based versions of this program fail to exit with non-zero status when an invalid POSTSCRIPT document is processed; this makes it problematic for the HylaFAX queue manager to determine when a problem arises when preparing a job for transmission. Yeah. It just... doesn't tell anyone. Not great, not slay.

👑 SEE ALSO 👑

sendfax(1), faxq(8), hylafax-server(5)


And that's the whole page, bestie 🫶 this one's from the System Manager's Manual, dated <b>August 26, 1996</b>, and it lives in the <b>PS2FAX(8)</b> section. Go forth and fax responsibly. 💅✨

📦 where this page comes from