Ghostscript is an incredibly significant program for Linux printing.
Most printing software under Unix generates PostScript, which is
typically a $100-300 option on a printer. Ghostscript,
however, is free, and will generate the language of your printer from
PostScript. When tied in with your lpd
input filter, it gives
you a virtual PostScript printer and simplifies life immensely.
Ghostscript is available in two forms. The commercial version of Ghostscript, called Aladdin Ghostscript, may be used freely for personal use but may not be distributed by commercial Linux distributions. It is generally a year or so ahead of the free Ghostscript; at the moment, for example, it supports Adobe Acrobat's Portable Document Format, while the older Ghostscripts do not.
The free version of Ghostscript is GNU Ghostscript, and is simply an aged version of Aladdin ghostscript kindly given to GNU. (Kudos to Aladdin for this arrangement; more software vendors should support free software in this way).
Ghostscript's main failing is in its fonts, which are derived from bitmap scans of the characters. Superior, but commercially licensed fonts may be obtained from several places, since Ghostscript can read type 1 Adobe fonts. Adobe distributes useable fonts with their Acrobat PDF reader, or you may use the fonts from Adobe's ATM or a fontpack.
Whatever you do with
gs
, be very
sure to run it with the option for disabling file access
(-dSAFER
). PostScript is a fully functional language, and a bad
PostScript program could give you quite a headache.
There are a number of things one can do if gs's output is not satisfactory (actually, you can do anything you darn well please, since you have the source).
The location, size, and aspect ratio of the image on a page is controlled by the printer-specific driver in ghostscript. If you find that your pages are coming out scrunched too short, or too long, or too big by a factor of two, you might want to look in your driver's source module and adjust whatever parameters jump out at you. Unfortunately, each driver is different, so I can't really tell you what to adjust, but most of them are reasonably well commented.
Most non-laser printers suffer from the fact that their dots are rather large. This results in pictures coming out too dark. If you experience this problem you should use your own transfer function. Simply create the following file in the ghostscript lib-dir and add its name to the gs call just before the actual file. You may need to tweak the actual values to fit your printer. Lower values result in a brighter print. Especially if your driver uses a Floyd-Steinberg algorithm to rasterize colors, lower values ( 0.2 - 0.15 ) are probably a good choice.
---8<---- gamma.ps ----8<---
%!
%transfer functions for cyan magenta yellow black
{0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer
---8<------------------8<---
It is also possible to mend printers that have some kind of colour fault by tweaking these values. If you do that kind of thing, I recommend using the file colorcir.ps, that comes with ghostscript (in the examples/ subdir), as a test page.