Introduction to GNU Ghostscript


Ghostscript is an interpreter for the PostScript (TM) language. A PostScript interpreter usually takes as input a set of graphics commands. The output is usually a page bitmap which is then sent to an output device such as a printer or display. PostScript is embedded in many printers.

Ghostscript has several main uses:

  1. Display a PostScript file (avoid killing trees).
  2. Display a PostScript file to decide if you really need to print it (reduce the number of trees killed).
  3. Print a PostScript file to a non-PostScript printer (kill more trees).

An example of a very simple PostScript file is:

  %!
  /Helvetica findfont 72 scalefont setfont
  72 72 moveto
  (Hello, world!) show
  showpage
The first line is a PostScript comment. It is ignored by the PostScript interpreter, but enables other programs to recognise that the file contains PostScript commands. The second line says to find the Helvetica font, scale it to 72 points high (1 inch) and then set it as the current font. The third line moves the current point to 1 inch in from the left and bottom edges of the page. The fourth line draws the text into the page bitmap at the current point. The final line causes the page bitmap to be output to paper or the display.

The information below assumes the use of GNU Ghostscript 5.50. Other versions of Ghostscript are similar. The Ghostscript program is typically found in /usr/local/bin/gs
Ghostscript needs some initialization files in /usr/local/lib/ghostscript/5.50
and some fonts in /usr/local/lib/ghostscript/fonts.
The documentation files are in /usr/local/lib/ghostscript/5.50/doc
and some example PostScript files are in /usr/local/lib/ghostscript/5.50/examples.

Displaying a PostScript file

Let's assume that you wish to display the above PostScript example and it is in a file named example.ps in the current directory. If Ghostscript has been correctly installed, then you would start Ghostscript using:
    gs
If Ghostscript has not been correclty installed, you will need to specify the full path, for example:
    /usr/local/bin/gs -I/usr/local/lib/ghostscript/5.50:/usr/local/lib/ghostscript/fonts
The -I option tells Ghostscript to look for its configuration files and fonts in the two directories listed. After Ghostscript starts it will display
  GNU Ghostscript 5.50 (1998-09-11)
  Copyright (C) 1998 Aladdin Enterprises, Menlo Park, CA.  All rights reserved.
  This software comes with NO WARRANTY: see the file COPYING for details.
  GS>
An X11 image window will appear. Ghostscript is now waiting for you to tell it what to do. Typing (example.ps) run will produce
  GS>(example.ps) run
  Loading NimbusSanL-Regu font from /usr/local/lib/ghostscript/fonts\n019003l.pfb... 
    1669824 366951 1300076 11892 0 done.
  >>showpage, press <return> to continue<<
The text "Hello, world!" will appear near the bottom of the X11 image window. When you have finished viewing the image window, switch to the text window and press the <return> key. You will be returned to the GS> prompt. Type quit to close Ghostscript.
  GS>quit
If the file is not in the current directory, then you will need to give a full path. For example, (/user/john/example.ps) run.

So now you know how to display a PostScript file. Some example PostScript files that come with Ghostscript are colorcir.ps, chess.ps and tiger.ps. These should be in the /usr/local/lib/ghostscript/5.50/examples directory.

Printing a PostScript file

In the above display example, we did not specify which output device Ghostscript should use. Ghostscript used the default device, which happened to be the display. To print a PostScript file, we need to tell Ghostscript the name of the printer device. For an HP DeskJet 500 or an HP DeskJet Portable printer, this is djet500. We would instead start Ghostscript with:
  gs -sDEVICE=djet500
The output will be sent to a scratch file. Ghostscript will come up with the GS> prompt again, we give it a file name, and after processing each page it will pause. This is probably undesirable. A better way to start Ghostscript is:
  gs -sDEVICE=djet500 -dNOPAUSE example.ps -c quit
This tells Ghostscript not to pause after each showpage, to interpret the file example.ps and afterwards to exit. This is much more useful.

To get a list of available printer devices, start Ghostscript for displaying, then type:

  GS>devicenames ==
The destination for the printed output can be specified on the command line. To output to the file out.prn, add -sOutputFile="out.prn" somewhere before the name of the PostScript file. To pipe the output to the lpr program, use -sOutputFile="\|lpr queuename"

More details

If you want more details about the Ghostscript command line options, see the file Use.htm distributed with Ghostscript. This should be in the directory /usr/local/lib/ghostscript/5.50/doc.

Alternative locations

You may find that Ghostscript is installed in a different place. For example, the base path might be /usr not /usr/local so the Ghostscript program may be in /usr/bin/gs
The documentation files may be in /usr/doc/ghostscript-5.50

A better way

If you are like me, you get sick of typing the long commands above. A program called Ghostview and several including GV exist for X11 on Unix or VMS. This allows you to display page 20 without having to display pages 1, 2, 3, 4, ... 20. You can also print selected pages.
PostScript is a trademark of Adobe Systems.
Last updated 2001-09-04
This page was written by Russell Lang.