Provided by: netpbm_11.07.00-2_amd64 bug

NAME

       pstopnm - convert a PostScript file to a PNM image

SYNOPSIS

       pstopnm

       [-stdout]

       [-forceplain]

       [-help]

       [-dpi=dpi]

       [-xsize=pixels] [-ysize=pixels]

       [-xborder=frac] [-yborder=frac] [-landscape]

       [-portrait]

       [-nocrop]

       [-pbm

       |-pgm

       |-ppm]

       [-llx=s] [-lly=s] [-urx=s] [-ury=s]

       [-verbose]

       [-xmax=pixels] [-ymax=pixels]

       [-textalphabits={1,2,4}]

       psfile[.ps]

OPTION USAGE

       Minimum  unique  abbreviation of option is acceptable.  You may use double hyphens instead
       of single hyphen to denote options.  You may use white space in place of the  equals  sign
       to separate an option name from its value.

DESCRIPTION

       This program is part of Netpbm(1).

       pstopnm  reads  a  PostScript or PDF file as input and produces PBM, PGM, or PPM images as
       output.  This program simply uses GhostScript to render a PostScript  file  with  its  PNM
       device drivers.  If you don't have GhostScript installed or the version you have installed
       was not built with the relevant PNM device drivers, pstopnm will fail.  You can see if you
       have  the  proper environment by issuing the command gs --help .  If it responds and lists
       under "Available Devices" pbm, pbmraw, pgm, pgmraw, pnm, pnmraw, ppm, or ppmraw, you're in
       business.

       It's  important to understand that pstopnm is a Netpbm image file format converter only in
       the broadest sense of the word, because Postscript is far from an image file format.  What
       pstopnm  really is is a Postscript renderer - an image generator.  One place you'll notice
       the difference is where you expect pstopnm | pnmtops to be idempotent (which  is  not  the
       case).  There are details on this kind of conversion below.

       pstopnm  uses  the  value of the GHOSTSCRIPT environment variable as the file name for the
       Ghostscript program.  If GHOSTSCRIPT is not set, pstopnm searches your PATH for a  regular
       file named gs.  If it doesn't find one, it assumes Ghostscript is in the file /usr/bin/gs.

       pstopnm  does  not  use  the  Netpbm libraries to generate the output files, so may not be
       entirely consistent with most Netpbm programs.

       psfile[.ps] is the name of the input file.  pstopnm will add the ps to the end of the name
       you  specify  if no file exists by the exact name you specify, but one with .psadded does.
       For Standard Input, use - or just don't give any argument.

       If you use the -stdout  option or your input  is  from  Standard  Input,  pstopnm  outputs
       images  of  all  the  pages  as a multi-image file to Standard Output.  Otherwise, pstopnm
       creates one file for each page in the Postscript input.  The files are named  as  follows:
       If  the  input  file  is  named  psfile.ps,  the  name of the files will be psfile001.ppm,
       psfile002.ppm, etc.  The filetype suffix is .ppm, .pgm, or .pbm, depending on  which  kind
       of output you choose with your invocation options.  If the input file name does not end in
       .ps, the whole file name is used in the output file name.  For example, if the input  file
       is named psfile.old, the output file name is psfile.old001.ppm, etc.

       Note  that the output file selection is inconsistent with most Netpbm programs, because it
       does not default to Standard Output.  This is for historical reasons, based  on  the  fact
       that the Netpbm formats did not always provide for a sequence of images in a single file.

       When  your  input  is  from  Standard Input, you may feed multiple Encapsulated Postscript
       documents, one after another, and pstopnm converts every document and  places  it  in  the
       Standard  Output  stream  as  an  image.   But if your input is from a named file, pstopnm
       expects the file to be an Encapsulated Postscript file, which means it contains  only  one
       Enapsulated  Postscript  document.   If the file contains multiple concatenated documents,
       pstopnm ignores every document but the first.  This distinction does not  exist  for  non-
       EPSF  Postscript  input  -  pstopnm  generates  an output image for each page of the input
       regardless of whether the input is from Standard Input or from a named file.

       Note that you can generate both kinds of files - concatenated EPSF and multi-page non-EPSF
       - with pnmtops, selecting with the -setpage option.

       Each  output  image contains a rectangular area of the page to which it pertains.  See the
       Dimensions section ⟨#dimensions⟩  for details on what part of the input  image  goes  into
       the  output  image and how big it is in the output and what borders and margins are in the
       output image.

       It has been reported that on some Postscript Version 1 input, Ghostscript,  and  therefore
       pstopnm,  produces  no  output.   To  solve  this  problem,  you  can  convert the file to
       Postscript Version 3 with the program ps2ps.  It is reported that the program pstops  does
       not work.

   Dimensions
       This  section  describes  what  part  of  the  input image gets used in the output and the
       dimensions of the output, including borders and background.

       Note that an output image is associated with a single input page.

       pstopnm starts by taking a rectangular area from the  input  page.   That  is  called  the
       subject image.

       pstopnm  may  add borders to the subject image to form what is called the bordered subject
       image.

       pstopnm places the bordered subject image in the center of the output image and clips  the
       edges as necessary to fit the computed output image size.

       The location of the subject image in the Postscript input page is defined by four numbers,
       the lower left corner and the upper right corner x and y coordinates.   These  coordinates
       are  usually  specified  by  the  BoundingBox  DSC statement (a Postscript comment) in the
       PostScript file, but they can be overridden by the user by specifying one or more  of  the
       following options: -llx, -lly, -urx, and -ury.

       The  presence  and  thickness  of  a  border  to be added to the subject image to form the
       bordered subject image is controlled by the options -xborder  and  -yborder.   If  pstopnm
       does  not  find  a  BoundingBox  statement  in the input, and you don't specify image area
       coordinates on the command line, pstopnm uses default  values.   If  your  input  is  from
       Standard  Input,  pstopnm  does  not  use the BoundingBox values (because of the technical
       difficulty of extracting that information and still feeding the file to  Ghostscript),  so
       you either have to specify the image area coordinates or take the default.

       The  output  image  size  is a confusing thing.  In a Postscript file, things have spatial
       dimensions.  For example, a particular line may  be  3  centimeters  long.   A  Postscript
       printer  is  supposed to print the line 3 centimeters long, using however many pixels that
       takes, without regard to how big the sheet of paper on which it is printing is.  In a  PNM
       image,  by contrast, there is no spatial dimension; there are only pixels.  You might have
       a line that is 100 pixels long, but the PNM image says nothing about how  long  that  line
       should be on a printed page.

       pstopnm  fills the role of a Postscript printer.  The PNM image is a virtual printed page.
       pstopnm must determine how many pixels it will use in the output  image  to  represent  an
       inch  of  input image, which is the "output device resolution."  Think of it as the number
       of dots per inch the virtual printer prints on the virtual page.

       The simplest thing is for you to tell pstopnm exactly what  output  device  resolution  to
       use,  using  the  -dpi  option.   If you say for example -dpi=300 and the bordered subject
       image is 2 inches by 3 inches, the PNM output will be 600 pixels  by  900  pixels.   Using
       this method, the output device resolution has to be the same in both directions.

       Or  you  can  set the output image dimensions with -xsize and -ysize.  For example, if you
       say -xsize=1200 -ysize=1800 and the bordered subject image is 2 inches wide  by  3  inches
       high,  the output image is 1200 by 1800 pixels, with each pixel representing 1/600 inch of
       input image.

       In the unlikely event that you  want  different  output  device  resolutions  in  the  two
       directions,  you  could  use  -xsize  and -ysize to do that.  In the above example, if you
       change -ysize to 900, a pixel still represents 1/600 inch  horizontally,  but  1/300  inch
       vertically.

       If you specify one of -xsize and -ysize and not the other, pstopnm defaults the other such
       that the output device resolution is the same in both directions.

       The "x" and "y" of -xsize and -ysize refer to the image being printed on the page, not the
       page.  So if pstopnm prints it in landscape orientation, "x" would pertain to the vertical
       direction on the page, i.e. the vertical direction in the output PNM image.

       If you specify neither the output size nor the output device resolution, pstopnm does some
       weird computation which exists mainly for historical reasons:

       If  you  specify  -nocrop, pstopnm uses the values of -xmax and -ymax for the output image
       dimensions.  These default to 612 and 792 pixels, respectively.

       The final case, the default, is where you don't specify any size or resolution options  or
       -nocrop.   This  is  the  most  complicated  case.  In this case, pstopnm first chooses an
       output device resolution that would generate the number of pixels indicated by  -xmax  and
       -ymax  from  the  bordered  subject  image.  Then, based on that resolution, it chooses an
       output image size that is just large enough to accommodate the subject image (no borders).
       Remember  (above)  that  pstopnm  trims the edges of the bordered subject image to fit the
       computed output size.

   Ghostscript Limitations
       Tests done in 2013 with Ghostscript 8.71 indicate that Ghostscript's pgmraw output  driver
       has  some kind of rounding error that causes the pixel values to change slightly, and that
       means pstopnm generates incorrect output when you have monochrome Postscript  input.   But
       with color Postscript input, pstopnm uses Ghostscript's ppmraw output driver and generates
       correct PPM output.

   Usage Notes
       There is some good advice on converting to and from Postscript, in the document  Postcript
       File Conversions" (1) by Andrew T. Young.

       Reversible Conversion

       If  you're trying to do the equivalent of the naive pnmtops | pstopnm, the following steps
       will do it.

           $ pnmtops -nocenter -equalpixels -dpi 72 -noturn testimg.ppm > testimg.ps
           $ pstopnm -xborder=0 -yborder=0 -xsize=XSIZE -ysize=YSIZE \
               -portrait -stdout -quiet testimg.ps >testimg2.ppm

       XSIZE and YSIZE above are the image dimensions, which you can get from testimg.ps like  in
       the  following  example  (the grep, awk and echo commands are just to help demonstrate how
       the other commands work - you wouldn't use those in a program).

           $ grep "BoundingBox" testimg.ps
           %%BoundingBox: 0 0 227 149

           $ awk  '/%%BoundingBox/ {print $4,$5}' testimg.ps
            227 149

           $ xysize=$(awk  '/%%BoundingBox/ {print "-xsize="$4,"-ysize="$5}' testimg.ps)
           $ echo $xysize

            -xsize=227 -ysize=149

           $ pstopnm -xborder=0 -yborder=0 $xysize -portrait ... testimg.ps

       Note that Ghostscript bugs can keep this from doing a perfect reversible conversion.

       PDF is a subset of Postscript, so pstopnm can convert from PDF to Netpbm format, but often
       produces  the  wrong  size  image  because  of  pstopnm's  reliance  on  a BoundingBox DSC
       statement, which PDF does not have.  With pure text PDFs, it works fine.  In other  cases,
       you  can  get  better  results by converting to general Postscript with the pdf2ps program
       that comes with Ghostscript.  For more information about converting to and from  PDF,  see
       Document/Graphics Software ⟨index.html#document⟩ .

OPTIONS

       In addition to the options common to all programs based on libnetpbm (most notably -quiet,
       see
        Common Options ⟨index.html#commonoptions⟩ ), pstopnm  recognizes  the  following  command
       line options:

       -forceplain
               forces  the  output  file  to  be in plain (text) format.  Otherwise, it is in raw
              (binary) format.  See pbm(1), etc.  Use this instead of the -plain common option if
              you need plain format output.

       -llx=bx
              selects  bx  as  the  lower  left corner x coordinate (in inches) on the Postscript
              input page of the subject image.  See the Dimensions section ⟨#dimensions⟩ .

       -lly=by
              selects by as the lower left corner y coordinate  (in  inches)  on  the  Postscript
              input page of the subject image.  See the Dimensions section ⟨#dimensions⟩ .

       -landscape
              renders the image in landscape orientation.

              If  you  specify  neither -portrait nor -landscape, pstopnm chooses the orientation
              that best fits the image on the output page.

              Landscape means printed sideways on the page, not printed the long way.  Those  are
              different things if the long edge of the page is the top one.

       -portrait
              renders the image in portrait orientation.

              See -landscape.

       -nocrop
              This  option  causes pstopnm to make the output image exactly the dimensions of the
              bordered subject image.  By default, pstopnm makes the output image the  dimensions
              specified by -xmax and -ymax.  See the Dimensions section ⟨#dimensions⟩ .

       -pbm

       -pgm

       -ppm   selects the format of the output file.  By default, all files are rendered as PPM.

       -stdout
              causes  output  to  go to Standard Output instead of to regular files, one per page
              (see description of output files above).  Use pnmsplit to extract individual  pages
              from Standard Output.

       -urx=tx
              selects  tx  as  the  upper right corner x coordinate (in inches) on the Postscript
              input page of the subject image.  See the Dimensions section ⟨#dimensions⟩ .

       -ury=ty
              selects ty as the upper right corner y coordinate (in  inches)  on  the  Postscript
              input page of the subject image.  See the Dimensions section ⟨#dimensions⟩ .

       -verbose
              prints processing information to stdout.

       -xborder=frac
              specifies that the left and right borders added to the subject image are to be frac
              times the subject image width.  The default  value  is  0.1.   See  the  Dimensions
              section ⟨#dimensions⟩ .

       -xmax=xmax
              specifies  that  the  output  image is to be xmax pixels wide.  The default is 612.
              See the Dimensions section ⟨#dimensions⟩ .

       -xsize=xsize
              specifies that the output image is to be xsize pixels  wide.   See  the  Dimensions
              section ⟨#dimensions⟩ .

       -yborder=frac
              specifies that the top and bottom borders added to the subject image are to be frac
              times the subject image height.  The default value  is  0.1.   See  the  Dimensions
              section ⟨#dimensions⟩ .

       -ymax=ymax
              specifies  that  the  output  image is to be ymax pixels high.  The default is 792.
              See the Dimensions section ⟨#dimensions⟩ .

       -ysize=ysize
              specifies that the output image is to be ymax  pixels  high.   See  the  Dimensions
              section ⟨#dimensions⟩ .

       -dpi=dpi
              specifies the output device resolution, in dots per inch, of the Postscript printer
              that pstopnm simulates.  This is the number of PNM  pixels  pstopnm  generates  for
              each inch of image.  See the Dimensions section ⟨#dimensions⟩ .

              This option was new in Netpbm 10.21 (March 2004).

       -textalphabits={1,2,4}
              This  controls subsample antialiasing of text.  Antialiasing is a form of smoothing
              that eliminates jagged edges on characters.  Subsample antialiasing is  a  kind  of
              antialiasing that uses subpixels in a box, and the value of this option is the size
              of that box.  4 gives you the best looking output, while 1 causes no  antialiasing.
              Smaller numbers make pnmtops use less CPU time.

              Pstopnm uses Ghostscript's TextAlphaBits parameter for this.

              The default is 4.

              This  option was new in Netpbm 10.53 (December 2010).  Older versions of pstopnm do
              no antialiasing.

LIMITATIONS

       The program will produce incorrect results  with  PostScript  files  that  initialize  the
       current  transformation  matrix.   In  these cases, page translation and rotation will not
       have any effect.  To render these files, probably the best bet is  to  use  the  following
       options:

           pstopnm -xborder 0 -yborder 0 -portrait -nocrop file.ps

       Additional  options  may  be needed if the document is supposed to be rendered on a medium
       different from letter-size paper.

SEE ALSO

       gs, pnmtops(1), psidtopgm(1), pbmtolps(1), pbmtoepsi(1), pnmsplit(1), pstofits

COPYRIGHT

       Copyright (c) 1992 Smithsonian Astrophysical Observatory

       PostScript is a Trademark of Adobe Systems Incorporated.

AUTHOR

       Alberto Accomazzi, WIPL, Center for Astrophysics.

DOCUMENT SOURCE

       This manual page was generated by the Netpbm tool 'makeman' from HTML source.  The  master
       documentation is at

              http://netpbm.sourceforge.net/doc/pstopnm.html