Updated: 14 July 2015
Table Of Contents


pbmtoescp2 - convert a PBM image to a ESC/P2 printer file


pbmtoescp2 [-compress=compressionmode] [-resolution={180|360|720}] [-stripeheight=n] [-formfeed] [-raw] [pbmfile]

All options can be abbreviated to their shortest unique prefix. You may use two hyphens instead of one to designate an option. You may use either white space or equals signs between an option name and its value.


This program is part of Netpbm.

pbmtoescp2 reads a PBM image as input. It produces an ESC/P2 raster graphic printer control stream as output.

This program creates an output that is printable on Epson printers that understand the ESC/P2 printer control language (e.g. the Stylus models). For older Epson 9-pin dot matrix printers, which use the ESC/P protocol, see pbmtoepson.

The printed output has one pixel for each pixel of the input image, except that it is padded up to the stripe size (see -stripeheight option) vertically and to a multiple of 8 columns horizontally. Before Netpbm 10.72 (September 2015), the output is instead truncated to those boundaries.


Input is read from file pbmfile if specified, otherwise from stdin. Output is written to stdout.

This determines the compression mode that pbmtoescp2 uses in its output. Valid values for compressionmode are 0 and 1. -compress=0 results in a printer control stream with uncompressed raster graphic data. -compress=1 results in a printer control stream with RLE compressed raster graphic data (RLE means Run Length Encoding). The default is -compress=1.
This determines the horizontal and the vertical print resolution set in the printer control stream. Another way of looking at it is a declaration of what the resolution of the input image is (PBM images don't have inherent resolution). Valid values for dpi are 180, 360, and 720. See hints for more information on this.

The default is -resolution=360.

Before Netpbm 10.72 (September 2015), 720 is not valid.

This option controls the height in lines of the stripes in the output.

The valid stripe heights in the printer language are 1, 8, and 24, but it is capable of expressing any height up to 255 and pbmtoescp2 accepts any value in the range 1-255. It issues a warning, though, if you choose something other than 1, 8, or 24.

The default is 24.

This option was new in Netpbm 10.72 (September 2015). Before that, the stripe size is always 24.

This option causes pbmtoescp2 to place a formfeed command at the end of the output.

This option was new in Netpbm 10.72 (September 2015).

This option causes pbmtoescp2 to generate only the data blocks. It does not generate printer commands to set up the output (for example, setting the line spacing).

You can use this to insert graphics into a larger printer command stream.

This option was new in Netpbm 10.72 (September 2015).


RLE compresses very well bitmaps of line drawings, preferably horizontal oriented contents like texts, sheets of music, etc. However, bitmaps derived from photographs are not ideal for RLE. In extreme cases, when no byte repetitions occur in the input, the result will be even slightly bigger than the input. To avoid this, use compression mode 0 to switch off RLE.

Each pixel in the input PBM image becomes one dot in the printed output. Therefore, you must make sure the width and height of the input are appropriate for the print resolution you choose and the print area you want. E.g. if you print at 180 dpi and want the image to print as 8 inches by 10, you must supply a PBM that is 1440 pixels wide by 1800 pixels high. You can adjust the size of the input with pamscale, pamstretch, pbmreduce, or pamenlarge.


escp2topbm, pbmtoepson, pamscale, pamstretch, pbmreduce, pamenlarge, pbm


Copyright (C) 2003 by Ulrich Walcher (u.walcher@gmx.de).


pbmtoescp2 was added to Netpbm in Release 10.18 (August 2003); it was created around the same time.


Table Of Contents