dwww Home | Manual pages | Find package

Pstopnm User Manual(1)      General Commands Manual      Pstopnm User Manual(1)

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 Ghost-
       Script 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  Stan-
       dard  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, ps-
       file002.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 Encapsu-
       lated 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 Enap-
       sulated Postscript document.  If the file contains multiple concatenated
       documents, pstopnm ignores every document but the first.  This  distinc-
       tion 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 ]8;;#dimensions\the Dimensions section]8;;\  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,  Ghost-
       script,  and therefore pstopnm, produces no output.  To solve this prob-
       lem, 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  back-
       ground.

       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 de-
       fined 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  im-
       age,  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 vir-
       tual  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 im-
       age  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  de-
       faults  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  orienta-
       tion,  "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,  re-
       spectively.

       The final case, the default, is where you don't specify any size or res-
       olution options or -nocrop.  This is the most complicated case.  In this
       case,  pstopnm first chooses an output device resolution that would gen-
       erate the number of pixels indicated by -xmax and -ymax  from  the  bor-
       dered subject image.  Then, based on that resolution, it chooses an out-
       put  image size that is just large enough to accommodate the subject im-
       age (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 incor-
       rect  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  com-
       mands  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 re-
       liance on a BoundingBox DSC statement, which PDF does  not  have.   With
       pure  text  PDFs, it works fine.  In other cases, you can get better re-
       sults by converting to general Postscript with the pdf2ps  program  that
       comes  with  Ghostscript.   For more information about converting to and
       from PDF, see ]8;;index.html#document\Document/Graphics Software]8;;\ .

OPTIONS
       In addition to the options common to all  programs  based  on  libnetpbm
       (most notably -quiet, see ]8;;index.html#commonoptions\ Common Options]8;;\ ), pstopnm recognizes the fol-
       lowing 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  ]8;;#dimensions\the Dimen-
              sions section]8;;\ .

       -lly=by
              selects  by  as the lower left corner y coordinate (in inches) on
              the Postscript input page of the subject image.   See  ]8;;#dimensions\the Dimen-
              sions section]8;;\ .

       -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 ]8;;#dimensions\the Dimensions section]8;;\ .

       -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 ]8;;#dimensions\the Dimen-
              sions section]8;;\ .

       -ury=ty
              selects ty as the upper right corner y coordinate (in inches)  on
              the  Postscript  input page of the subject image.  See ]8;;#dimensions\the Dimen-
              sions section]8;;\ .

       -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 ]8;;#dimensions\the Dimensions section]8;;\ .

       -xmax=xmax
              specifies that the output image is to be xmax pixels  wide.   The
              default is 612.  See ]8;;#dimensions\the Dimensions section]8;;\ .

       -xsize=xsize
              specifies  that the output image is to be xsize pixels wide.  See
              ]8;;#dimensions\the Dimensions section]8;;\ .

       -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 ]8;;#dimensions\the Dimensions section]8;;\ .

       -ymax=ymax
              specifies  that  the output image is to be ymax pixels high.  The
              default is 792.  See ]8;;#dimensions\the Dimensions section]8;;\ .

       -ysize=ysize
              specifies that the output image is to be ymax pixels  high.   See
              ]8;;#dimensions\the Dimensions section]8;;\ .

       -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 ]8;;#dimensions\the Di-
              mensions section]8;;\ .

              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  sub-
              pixels 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 an-
              tialiasing.  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  ver-
              sions 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  ren-
       dered 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

netpbm documentation            21 February 2024         Pstopnm User Manual(1)

Generated by dwww version 1.16 on Tue Dec 16 04:44:41 CET 2025.