In addition to the options common to all programs based on libnetpbm (most notably -quiet, see Common
Options ), pnmtops recognizes the following command line options:
-imagewidth, -imageheight
Tells how wide and high you want the image on the page, in inches. The aspect ratio of the image
is preserved, so if you specify both of these, the image on the page will be the largest image
that will fit within the box of those dimensions.
If these dimensions are greater than the page size, you get Postscript output that runs off the
page.
You cannot use imagewidth or imageheight with -scale or -equalpixels.
-equalpixels
This option causes the output image to have the same number of pixels as the input image. So if
the output device is 600 dpi and your image is 3000 pixels wide, the output image would be 5
inches wide.
You cannot use -equalpixels with -imagewidth, -imageheight, or -scale.
-bitspersample=N
This option selects the number of bits for each component of each pixel in the Postscript output.
By default, pnmtops chooses the value that corresponds to the maxval of the PNM input, subject to
constraints of the Postscript language. In particular, if you don't select Postscript level 2
(-level) with built-in Postscript (-psfilter), the most bits per pixel you can have is 8.
The value must be 1, 2, 4, 8, or 12, with 12 being restricted to the case described above.
This option was new in Netpbm 10.51 (June 2010).
-scale tells how big you want the image on the page. The value is the number of inches of output image
that you want 72 pixels of the input to generate.
But pnmtops rounds the number to something that is an integral number of output device pixels.
E.g. if the output device is 300 dpi and you specify -scale=1.0, then 75 (not 72) pixels of input
becomes one inch of output (4 output pixels for each input pixel). Note that the -dpi option
tells pnmtops how many pixels per inch the output device generates.
If the size so specified does not fit on the page (as measured either by the -width and -height
options or the default page size of 8.5 inches by 11 inches), pnmtops ignores the -scale option,
issues a warning, and scales the image to fit on the page.
-dpi=N[xN]
This option specifies the dots per inch resolution of your output device. The default is 300 dpi.
In theory PostScript is device-independent and you don't have to worry about this, but in practice
its raster rendering can have unsightly bands if the device pixels and the image pixels aren't in
sync.
Also this option is crucial to the working of the equalpixels option.
If you specify NxN, the first number is the horizontal resolution and the second number is the
vertical resolution. If you specify just a single number N, that is the resolution in both
directions.
-width, -height
These options specify the dimensions, in inches, of the page on which the output is to be
printed. This can affect the size of the output image.
The page size has no effect, however, when you specify the -imagewidth, -imageheight, or
-equalpixels options.
These options may also affect positioning of the image on the page and even the paper selected (or
cut) by the printer/plotter when the output is printed. See the -nosetpage option.
The default is 8.5 inches by 11 inches.
-turn-noturn
These options control whether the image gets turned 90 degrees. Normally, if an image fits the
page better when turned (e.g. the image is wider than it is tall, but the page is taller than it
is wide), it gets turned automatically to better fit the page. If you specify the -turn option,
pnmtops turns the image no matter what its shape; If you specify -noturn, pnmtops does not turn
it no matter what its shape.
-rle-runlength
These identical options tell pnmtops to use run length compression in encoding the image in the
Postscript program. This may save time if the host-to-printer link is slow; but normally the
printer's processing time dominates, so -rle has no effect (and in the absence of buffering, may
make things slower).
This may, however, make the Postscript program considerable smaller.
This usually doesn't help at all with a color image and -psfilter, because in that case, the
Postscript program pnmtops creates has the red, green, and blue values for each pixel together,
which means you would see long runs of identical bytes only in the unlikely event that the red,
green, and blue values for a bunch of adjacent pixels are all the same. But without -psfilter,
the Postscript program has all the red values, then all the green values, then all the blue
values, so long runs appear wherever there are long stretches of the same color.
Here is an explanation by Jef Poskanzer of why he invented the -rle option:
I just spent a few hours modifying my pbmtops filter to produce run length encoded PostScript
output. The results are not spectacular for me - yes, the files are smaller, but the printing
times are about the same. But I'm printing over the network. If you were stuck with the serial
line, this would be a big win. I've appended a sample program generated by my filter. If anyone
sees ways to improve the code, please let me know, I'm not much of a PostScript hacker. This
version of pbmtops will be distributed to comp.sources.misc and expo.lcs.mit.edu sometime in
October. - Jef
This is from a forum about Postscript (http://www.lngpstscrpt.tk/re-postscript-run-length-encoding-
again), extracted in October 2010. Jef added -rle in August 1988. In those days, RS-232 lines (referred
to as "serial" in the quotation) were typically 9600bps. 2400 bps lines were still around. What the
quotation calls "the network" is probably a 10 Mbps Ethernet connection.
-flate This option tells pnmtops to use "flate" compression (i.e. compression via the "Z" library -- the
same as PNG).
See the -rle option for information about compression in general.
You must specify -psfilter if you specify -flate.
There exist modern versions of pnmtops that cannot do flate compression; these versions were built
without the Z library and built not to require the Z library. If you have such a version, it
fails with an explanatory error message when you specify -flate.
This option was new in Netbpm 10.27 (March 2005).
Before Netpbm 10.32 (February 2006), you could not specify -rle and -flate together.
-ascii85
By default, pnmtops uses "asciihex" encoding of the image raster. The image raster is a stream of
bits, while a Postscript program is text, so there has to be an encoding from bits to text.
Asciihex encoding is just the common hexadecimal representation of bits. E.g. 8 1 bits would be
encoded as the two characters "FF".
With the -ascii85 option, pnmtops uses "ascii85" encoding instead. This is an encoding in which
32 bits are encoded into five characters of text. Thus, it produces less text for the same raster
than asciihex. But ascii85 is not available in Postscript Level 1, whereas asciihex is.
This option was new in Netbpm 10.27 (March 2005).
-psfilterpnmtops can generate two different kinds of Encapsulated Postscript programs to represent an
image. By default, it generates a program that redefines readstring in a custom manner and
doesn't rely on any built-in Postscript filters. But with the -psfilter option, pnmtops leaves
readstring alone and uses the built-in Postscript filters /ASCII85Decode, /ASCIIHexDecode,
/RunLengthDecode, and /FlateDecode.
This option was new in Netbpm 10.27 (March 2005). Before that, pnmtops always used the custom
readstring.
The custom code can't do flate or ascii85 encoding, so you must use -psfilter if you want those
(see -flate, -ascii85).
-level This option determines the level (version number) of Postscript that pnmtops uses. By default,
pnmtops uses Level 2. Some features of pnmtops are available only in higher Postscript levels, so
if you specify too low a level for your image and your options, pnmtops fails. For example,
pnmtops cannot do a color image in Level 1.
This option was new in Netpbm 10.27 (March 2005). Before that, pnmtops always used Level 2.
-dict This causes the Postscript program create a separated dictionary for its local variables and
remove it from the stack as it exits.
This option was new in Netbpm 10.27 (March 2005).
-vmreclaim
This option causes the Postscript program to force a memory garbage collection as it exits.
This option was new in Netbpm 10.27 (March 2005).
-nocenter
By default, pnmtops centers the image on the output page.
You can cause pnmtops to instead put the image against the
lower left corner of the page with the -nocenter
option. This is useful for programs which can include
PostScript files, but can't cope with pictures which are not
positioned in the lower left corner.
If you want to position an image on the page arbitrarily, use
pamcomp to create an image of the full page with the image in
question at the proper place and the rest of the page white, and use
pnmtops to convert the composed result to Encapsulated Postscript.
For backward compatibility, pnmtops accepts the option
-center, but it has no effect.
-setpage
This causes pnmtops to include a "setpagedevice"
directive in the output. This causes the output to violate specifications
of EPSF encapsulated Postscript, but if you're not using it in an
encapsulated way, may be what you need. The directive tells the
printer/plotter what size paper to use (or cut). The dimensions it
specifies on this directive are those selected by the
-width and -height options or defaulted.
From January through May 2002, the default was to include
"setpagedevice" and this option did not exist. Before
January 2002, there was no way to include "setpagedevice"
and neither the -setpage nor -nosetpage option existed.
-nosetpage
This tells pnmtops not to include a "setpagedevice"
directive in the output. This is the default, so the option has no
effect.
See the -setpage option for the history of this option.
-noshowpage
This tells pnmtops not to include a "showpage"
directive in the output. By default, pnmtops includes a
"showpage" at the end of the EPSF program. According to
EPSF specs, this is OK, and the program that includes the EPSF is
supposed to redefine showpage so this doesn't cause undesirable
behavior. But it's often easier just not to have the showpage.
This options was new in Netpbm 10.27 (March 2005). Earlier
versions of pnmtops always include the showpage.
-showpage
This tells pnmtops to include a "showpage" directive
at the end of the EPSF output. This is the default, so the option has
no effect.
This option was new in Netpbm 10.27 (March 2005).
-verbose
This causes informational messages about the conversion process and
result.