[ Prev ] [ Index ] [ Next ]

Ghostscript gs(1) is a postscript and pdf engine that can be used for a bunch of these, including rendering postscript files. On most linux systems, the Ghostscript interpretor is started with the gs(1) command. Arguments, including an input filename, output device and etc are all optional as they can be specfied within the interpretor interface itself. The Ghostscript prompt GS> indicates that the interpretor is ready to receive postscript commands. Typing quit will exit the interpretor.

1. Basics On most linux systems, the Ghostscript interpretor is started with the gs(1) command. Arguments, including an input filename, output device and etc. are all optional as they can be specfied within the interpretor interface itself. The Ghostscript prompt GS> indicates that the interpretor is ready to receive postscript commands. Typing quit will exit the interpretor.

2. Viewing a postscript file (X display device)

The ghostscript command can be used to view the contents of a postscript file
simply by running gs(1) with the name of the postscript file as an argument.
However, if ghostscript is not given an output device, then it will choose the
first available one that it finds and direct all output to that device. This
may result in your postscript file not showing up on your X terminal as 
expected. This can be resolved by specifying the device (either on the
command line with DEVICE= or within ghostscript itself, see point #3 for
this). Typically the "x11" device is what's needed for rendering postscript
to a display device. Refer to point #4 for more info on output devices.
bash % gs -sDEVICE=x11 some.ps      
The above render page 1 of "some.ps" on the x11 device. To move to the
next page either type "nextpage" or press enter at the "GS>" prompt.
Note that the desired output device must be selected before the postscript
file is loaded, otherwise the preceeding (or default) device is used
(this is also clearly applies to using commands within ghostscript)

3. Postscript commands

Ghostscript is a postscript interpretor and as such you can issue postscript
commands at the GS> prompt. The following sequence of commands sets
the device to "x11" and runs the postscript file "some.ps"
bash % gs
GS> 
GNU Ghostscript 7.07 (2003-05-17)
GS> (x11) selectdevice
GS> (some.ps) run
GS) quit

4. Report known devices

Ghostscript will report the output devices it knows about as part of
the help (-h) option. The output below is edited to reduce size:
bash % gs -h
GNU Ghostscript 7.07 (2003-05-17)
Copyright (C) 2003 artofcode LLC, Benicia, CA.  All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
 -sDEVICE=<devname>  select device         | -dBATCH  exit after last file
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF
Default output device: display
Available devices:
   AP21xx DJ630 DJ6xx DJ6xxP DJ8xx DJ9xx DJ9xxVIP alc1900 alc2000 alc4000
   bitcmyk bitrgb bj10e bj10v bj10vh bj200 bjc600 bjc800 bjc880j bjccmyk
Search path:
   . : /usr/share/ghostscript/7.07/lib : /usr/share/ghostscript/7.07/vflib :
For more information, see /usr/share/doc/ghostscript-7.07/Use.htm.
Report bugs to bug-gs@ghostscript.com, using the form in Bug-form.htm.

5. Directing output to the printer

It's possible to use Ghostscripts "OutputFile" command to send the rendering
to a printer. This is done by setting the output file to a piped command (note
the pipe needs to be quoted to stop the shell from interpreting it straight
away).
bash % gs -sOutputFile=\|lpr some.ps

6. Ghostscript doco

The installed Ghostscript (for linux) has documentation in /usr/share/doc
as well as the man pages. There are examples as well. These absolute pathnames
refer to version 7.07 of Ghostscript as installed for FC3.
/usr/share/ghostscript/7.07     Lib and examples
/usr/share/doc/ghostscript-7.07 Doco directory: 
/usr/man/man1/gs*.1             Man pages. E.g., gs, gslp and etc.

7. Paging

Ghostscript paging is pretty obscure. It appears that phostscript files
get "executed" (i.e., with commands like "(a.ps) run", which is implied
with a filename is provided on the command line. 
Whislt it's possible to start at an arbitrary page of a document, it
doesn't appear possible to move back and forward through pages of a 
running document or if it is, then it's pretty weird and baroque.
By default, page prompts occur at the end of each page of a running 
document. Ghostscript (actually EPS) requires a bounding box to define 
the permimeter of the rendering area of the postscript being displayed 
and this is used this to determine where the end of a page is and 
Ghostscript puts a prompt and pauses for user interaction.
Pressing enter continues from the pause. Both the pause and the prompt
(which is "showpage press return") can be disabled. Indeed Ghostscript
can be directed to read it's prompt input from /dev/tty instead of
stdin.
Some simple switches relating to pagination and prompting (lifted
from GS 7.07 doco):
-dNOPAGEPROMPT  Disables the prompt, but not the pause. 
-dNOPAUSE       Disables both the prompt and pause. This should be
                used (along with -dBATCH) when producing output on 
                a printer or to a file. 
-dNOPROMPT      Disables the printed prompt by Ghostscript when it 
                expects interactive input, as well as the end-of-page 
                prompt (-dNOPAGEPROMPT); This allows piping input 
                directly into Ghostscript. Note, gs still pauses
                though.
-dQUIET         Suppresses information comments on standard output. 
                Required when redirecting device output to standard 
                output. 
-dSHORTERRORS   Makes certain error and information messages more 
                Adobe-compatible. 
-sstdout=filename Redirect PostScript %stdout to a file or stderr. 
                Avoids it being mixed with device stdout. To redirect 
                stdout to stderr use -sstdout=%stderr. To cancel 
                redirection of stdout use -sstdout=%stdout or -sstdout=-. 
-dTTYPAUSE      Read a character from /dev/tty at the end of each page. 
                May be useful if input is coming from a pipe. Note that 
                -dTTYPAUSE overrides -dNOPAUSE. 

No backlinks to this page.