hp2xx - A HPGL converter into some vector- and raster formats


   hp2xx [-options] [hpgl-file(s)]


   Option Format  Default   Description
   General options:
     -c   char *  11111111  Pen color(s). Valid: 1 to 8 digits of 0-7 each.
                            0=off, 1=black, 2=red, 3=green, 4=blue, 5=cyan,
                            6=magenta, 7=yellow.
     -f   char *  ""        Name of output file. "" = autom., "-" = stdout
     -l   char *  ""        Name of optional log file
     -m   char *  pre       Mode. Valid (some are compile-time options):
     -p   char *  11111111  Pensize(s) [dots] (default), [1/10 mm] (mf, ps).
                            Valid: 1 to 8 digits of 0-9 (or characters A-Z for
                   widths beyond 0.9mm) each.
     -P   int     0:0       Selected page range (m:n) (0 = 0:0 = all pages)
     -q           off       Quiet mode. No diagnostic output.
     -r   double  0.0       Rotation angle [deg]. -r90 gives landscape
     -s   char *  hp2xx.swp Name of swap file

   Size controls:
     -a   double  1.0       Aspect factor. Valid: > 0.0
     -h   double  200       Height [mm] of picture
     -w   double  200       Width  [mm] of picture
     -x   double   -        Preset xmin value of HPGL coordinate range
     -X   double   -        Preset xmax value of HPGL coordinate range
     -y   double   -        Preset ymin value of HPGL coordinate range
     -Y   double   -        Preset ymax value of HPGL coordinate range
     -z   double  1.0       Z engagement (working depth) (used in nc output only)
     -Z   double -1.0       Z retraction depth (used in nc output only)
     -t           off       True size mode. Inhibits effects of -a -h -w

   HPGL handling controls:
     -n           off   No filling of polygons; draws outline instead
     -N           off   Ignore PS commands, calculate plot size as needed
     -e   int     0     Extend IW clipping limits by given amount
     -M   int      0        Remap pen no.0 commands to given pen

   Raster format controls:
     -d   int     75        DPI value (x or both x&y)
     -D   int     75        DPI value (y only)

   PCL only:
     -F           off       Send a FormFeed after graphics data
     -i           off       Pre-initialize printer
     -S   int     0         (Deskjet) Special commands: 0=off,1=b/w,3=CMY,4=CMYK
     -d   (see above)       Valid ONLY 300, 150, 100, 75
     -D   (see above)       INVALID for PCL!

   EPS, PCL, and some previews:
     -o   double  0.0       x offset [mm] of picture (left  margin)
     -O   double  0.0       y offset [mm] of picture (upper margin)
     -C                     Modify -o -O to center picture within -w -h frame

   TIFF only:
     -S   int     0         Compression: 0/1=off,2=RLE,3=G3FAX,4=G4FAX,

   Preview on PC's (DOS):
     -V   int     18        VGA mode byte (decimal)
     -H              Show help.


   hp2xx reads HPGL ASCII source files, interprets them, and converts them
   into  either  another  vector-oriented   format  or  one   of   several
   rasterfile  formats.  Currently,  its  HPGL  parser  recognizes a large
   subset of HPGL/2.  Some high-level functions related to polygon filling
   are  missing.  Also, only some of the fixed space vector fonts and none
   of  the  variable  space  arc  fonts  are   supported.   Beside   these
   limitations,  hp2xx  has proven to work with many HP-GL sources without
   any trouble.


   hp2xx reads from stdin or from a file if any given on the command line.
   If  no  output  file  name is given (default), the output automatically
   goes into a file whose name is derived from the input file name and the
   current mode. For example, hp2xx -m pcl foo.hpgl writes the output to a
   file "foo.pcl". Use option -f outfile to specify your output file  name
   explicitly,  or  -I  -f-  to  write  to stdout, e.g. when piping into a

   The program  scans  the  current  HPGL  source,  converts  all  drawing
   commands  into elementary vectors, saves these in a temporary file, and
   concurrently determines the maximum  coordinate  range  used.  It  then
   processes  the  vectors  by mapping them into a user-defined coordinate
   system, preserving the aspect ratio of the original data.

   This coordinate system by default fits into a window of size 200 mm  by
   200  mm.  To change the size of this bounding window, use -h height and
   -w width to set the (max.) desired height  and  width  of  your  output
   picture;  optionally  use  -a aspectfactor to alter the aspect ratio by
   the  given  factor  (aspectfactor  <  1  narrows  your  picture).   The
   generated  picture will always fit into the window defined by -h height
   and -w width, padded with background color at the lower or right margin
   if needed.

   A second way of defining sizes is relying on the size the picture would
   actually show if plotted  on  a  sheet  of  paper  by  a  HP-compatible
   plotter.  By  activating flag -I -t (true size), options -a, -h, and -w
   are ignored, and the sizes are derived from  the  HP-GL  file  assuming
   that 1 HP unit = 1/40 mm.

   Option  -r  rotation_angle (in degrees) allows you to rotate the object
   prior to  all  scaling  operations.  Its  main  use  is  to  facilitate
   landscape format: -r90 rotates your whole picture, e.g. from portait to
   landscape format. However, any reasonable rotation angle is valid.

   By naming  a  file  with  option  -l  log_file  you  can  redirect  the
   diagnostic  outputs  into  the  given  file, even without a redirection
   mechanism for stderr like in UNIX  shells  (e.  g.,  DOS).   Option  -q
   (quiet) gets rid of them completely.

   If  you  need  to  process  a series of similar objects which should be
   translated into exactly the same coordinate system, there is a  way  to
   override the auto-scaling: First, run all files separately and note the
   infos on the used coordinate ranges. Then, pick a range that will cover
   ALL  your  pictures.   You  can  now  assign defaults to the internally
   generated range limits by specifying -x xmin, -X xmax, -y ymin, and  -Y
   ymax.   NOTE:  Clipping  is  only supported via the IW command ! If any
   picture coordinate exceeds your limits, they will be overwritten.

   Use option -m mode to select the program mode, i.e. the output  format.
   Currently  supported:  mode  =  "mf" (Metafont), "em" (emTeX \special{}
   commands), "epic" (line drawing  using  TeX  macros  within  epic.sty),
   "eps"  (PostScript), "dxf" (Autocad), "emf/emp" (MS Enhanced Metafile /
   Printing  -  available  in  Windows-built  executables   only),   "svg"
   (Scalable  Vector  Graphics),  "fig" (XFig 3.2), "gpt" (GnuPlot ascii),
   "hpgl" (simplified HP-GL, e.g. for import tasks), "pcl" (HP-PCL Level 3
   format  (suitable  for  printing  on  a  HP  Laserjet  II,  DeskJet, or
   compatible printer), "escp2" (Epson Esc/P2 printer  commands,  suitable
   for  printing  on  Epson Stylus models), "img" (GEMs IMG format), "jpg"
   (JPEG image), "pdf" (Adobe Portable Document format),  "pbm"  (Portable
   Bit  Map  /  Portable  PixMap  for  color  plots), "pcx" (PC-Paintbrush
   format, also accepted by MS-Paintbrush / Windows 3.0 and many other  PC
   based  pixel renderers), "png" (Portable Network Graphics format), "nc"
   (CNC G-code, for engravings), or "rgip" (Uniplex RGIP).  There is  also
   a  preview  option  "pre" which supports VGA cards (DOS), ATARI, AMIGA,
   X11 servers, and Sunview. Default mode is "pre".   (As  some  of  these
   modes  rely  on external libraries, they may not be builtin by default,
   and not be available  in  prebuilt  binaries  supplied  e.g.  in  Linux
   distributions.  The  usage  messsage  generated  when  hp2xx is invoked
   without parameters will  always  list  exactly  those  modes  that  are
   actually available.)

   If you use a raster format, the picture is rasterized by default into a
   75 DPI  resolution  image.  Use  option  -d  DPI_value  to  change  the
   resolution,  e.g.  -d300  will  cause  a  HP  LJ-II  compatible 300 dpi
   rasterization. There is a way of specifying a different resolution  for
   y direction: -D DPI_y_value

   Some  programs  were  found  to  generate  HPGL  output  with too tight
   clipping bounds, which  lead,  for  example,  to  some  parts  of  text
   characters  clipped  off.   Use  option  -e extraclip to add some extra
   amount of space  to  clip  areas  to  workaround  such  mistakes.   For
   example,  -e  40  will  add  40  extra  plotter  units to every side of
   clipping box which is 1 mm in true size.

   While processing  large  pictures  at  high  resolution  on  low-memory
   machines,   typically  under  DOS,  the  program  may  start  swapping.
   Optionally change the swap file by using -s swapfile, e.g. to speed  up
   processing by swapping to a RAM disk.

   Unless  the  hpgl  file  specifies  its own selection of pen widths and
   colors (for up to 256 pens), a carousel of 8 pens is simulated. You can
   specify  pen  sizes  and  colors  for each of these pens via options -p
   string and -c string.  "string" must consist of 1..8  digits  (0-9  for
   size,  0-7 for color).  Digit number n (counting from left) corresponds
   to pen number n.  The digit value  is  this  pen's  color  or  size  in
   internal  units.  The pen width unit corresponds to 1/10 mm - using pen
   widths beyond 0.9mm is possible by  using  the  letters  of  the  latin
   alphabet,  so  that  A=1mm,  B=1.1mm etc. The default size is 1 for all
   pens.   Colors  are  assigned  according  to:  0=off,  1=black,  2=red,
   3=green,   4=blue,  5=cyan,  6=magenta,  7=yellow.   Examples  of  use:
   -p22222222 -c33333333 changes all pensizes to 2 units,  all  colors  to
   green  -p302  -c407 makes pen #1 a blue pen of size 3 , pen #3 a yellow
   pen of size 2, suppresses all drawing with pen #2, and keeps all  other
   pen  sizes  and  colors.   Setting  either  -p  or -c will override the
   equivalent HPGL/2 commands (PC,PW) in the HP-GL file.

   Sometimes, HP-GL files contain several pages of plotter output.   hp2xx
   recognizes  the  HP-GL  commands  for  "feed-forward",  "pause" or "new
   page", and by default draws each image as a separate  page  (saving  to
   sequentially numbered output files, or opening a new preview window for
   each). You can select any particular page  range  by  using  option  -P
   firstpage:lastpage  which  causes  hp2xx  to  skip all drawing commands
   except those on the given pages.  Please  note  that  even  if  only  a
   single page is actually drawn, hp2xx will nonetheless process the whole
   HP-GL file. This makes sure that effects of  early  pages  on  internal
   modes indeed influence later pages, as on a real plotter.


   Supported  vector  formats are: TeX/Metafont, emTex-specials, TeX/epic-
   Macros, Autocad DXF CNC G-code  XFig  3.2,  GnuPlot  ASCII,  Simplified
   HP_GL,  Uniplex RGIP Scalable Vector Graphics (SVG) Adobe PDF(if libpdf
   is available) and -I PostScript.  Use -m mf to convert a  HPGL  drawing
   into  a  Metafont  character  to be included into a TeX document as the
   character "Z" of a special font that you may create. Edit the  metafont
   source,  e.g.,  to  change the letter "Z" for another, or to change the
   line thickness, which is set to  0.4pt  by  default.   The  other  TeX-
   related  modes  ("cad"  for  TeXcad compatible code, "em" for employing
   \special{em:line} macros, and "epic" for drawing lines with macros from
   "epic.sty")  address different compromises to cope with TeX's poor line
   drawing  capability  and  are  generally  not  recommended  nor   fully
   supported.  Feel  free  to  experiment with them -- they generate ASCII
   output that should be "input" into TeX/LaTeX documents.

   Use option -p pensize(s) for control over pensize: The actual  Metafont
   or  PostScript pensize will be "pensize * 0.1 mm", with pensize = 0 - 9
   (0 = no drawing).  The same applies to

   In PostScript mode (-m eps), you may also need to use options -o and -O
   (see  below)  for proper margins on paper since hp2xx puts your picture
   "flush" to the left and upper paper limit by default.


   The following formats are supported: HP-PCL,  Esc/P2,  PCX,  PIC,  IMG,
   JPG,  PBM/PPM,  PNG,  TIFF, and previews. (PNG and TIFF formats rely on
   external libpng,zlib and libtiff, JPG relies on libjpeg. Versions built
   on  MS  windows  systems  -  or versions linked against libEMF on other
   platforms - may additionally support EMF generation and printing.)

   Addition of other formats is  made  easy  for  programmers  because  of
   hp2xx's modular structure. The program allocates a bitmap on a line-by-
   line basis, swapping lines to disk  if  needed,  and  plots  into  this
   bitmap.  Depending  on the selected format, a conversion module is then
   activated, which can easily be replaced by other converters.  Add  more
   formats if you like!

   Option  -p  pensize(s)  controls  the  size  (in pixels) of the virtual
   plotting pen. The only implemented shape of the pen tip is a square  of
   the  given  length.   pen  sizes  of  5...9 units will be acccepted but
   replaced by 4 units.  Specifying -p4 when in  75  DPI  mode  will  make
   pretty  clumsy  pictures, while you may prefer -p2 over -p1 when in 300

   PCX: The size of a PCX picture is controlled via its  specified  height
   and  the current DPI value. To create a high-resolution PCX image, just
   increase the DPI value as desired. PCX format does not accept offsets.

   IMG: See PCX.

   PBM/PPM: See PCX for options. If your  hpgl  file  is  not  monochrome,
   hp2xx will automatically create a PPM (portable pixmap) file instead of
   a PBM bitmap. (Use -c11111111 to force generation of PBM from  a  color
   hpgl file).  Depending on the compile-time option PBM_ASCII, hp2xx will
   create ascii or binary pbm (ppm) files -  usually  the  more  efficient
   binary format should be preferred.

   (Unsupported  options)  PIC, PAC: ATARI ST screens (640x400 pixels) can
   easily be dumped to files. Programs such as  STAD  accept  graphics  by
   including  such  screen  dump  files.   Graphics  filling more than one
   screenful may be  split  into  screen-size  blocks  and  loaded/mounted
   blockwise.   hp2xx converts to ATARI bitmap format by trying to fit the
   resulting picture into a single screen equivalent (max. 400 rows,  max.
   80  Bytes (640 pixel) per row). If it succeeds, hp2xx produces a single
   output file. Specify ONLY its base name (option -f), since  hp2xx  adds
   the  file  extension ".pic" or ".pac" automatically. Do NOT try to work
   on more than one HPGL file simultaneously!  Do  NOT  use  more  than  6
   characters  for  the file name, and avoid digits. If more screen blocks
   are required horizontally and/or vertically, hp2xx  will  automatically
   split  the  picture into separate files, counting them columnwise (top-
   to-bottom and left-to-right), adding a two-digit number  to  the  given
   file name. A maximum of 10 columns is supported.  The picture is padded
   with background color at its right and lower margins,  if  needed.  PAC
   features file compression, PIC does not.

   PCL:  HP-PCL Level 3 format, most useful for direct printer output. Due
   to this action, there have been added some extra flags and options: Use
   flag  -i  to  send  a printer initialization sequence before the actual
   image. Among other things, this will instruct the printer  which  paper
   size  to  use. Flag -F adds a Form Feed (FF, hex 0C) after the image is
   completed, which is what you  may  want  most  of  the  time.  However,
   overlay printing of several files is feasible by omitting -F.

   For  additional  control  of the picture's final position on paper, you
   may add x or y offsets using -o X_offset or -O Y_offset. E.g., -o 20 -O
   30  will give you 30 mm additional top margin and 20 mm additional left
   margin. Option -C modifies these offsets to center the  picture  within
   the frame defined by -w -h.

   The  option  -C  will  attempt  to  center  the  drawing  on  the paper
   automatically. Note also that hp2xx  now  honors  any  PS  (page  size)
   commands in the hpgl file, which can also create white space around the
   actual drawing.

   The option -N will make hp2xx ignore any PS commands given in the  hpgl
   file,  and  recalculate  the  image  size  based on the actual geometry

   The option -n will make hp2xx  ignore  any  polygon  filling  commands,
   rendering only their outlines. This may serve both as a work-around for
   hp2xx' limited polyfill  support,  and  improve  clarity  of  thumbnail
   images of PCB designs and the like.

   The  option  -M pennumber will remap any color or drawing commands from
   pen 0 to the specified pen (which should typically be otherwise  unused
   in the drawing). Historically, selecting pen 0 instructed a pen plotter
   to put away the pen and stop drawing, while modern inkjet plotters  can
   use it like any other color. Due to this ambiguity, hp2xx will draw the
   background of raster graphics in the pen 0 color, unless this option is

   For  DeskJet / DeskJet Plus / DeskJet 500 / Deskjet 550 printers, there
   are some special printer commands. Activate them with option -S n.  n=0
   switches  them  off,  n=1  activates  black/white mode, n=3 (DJ500C and
   DJ550 only) supports CMY color data, n=4 (DJ550C  only)  supports  CMYK
   color data.  Any n!=0 activates PLC data compression (TIFF mode: 2).

   Esc/P2: This is the control language used in the Epson Stylus family of
   inkjets.  hp2xx currently does  not  address  more  than  one  line  of
   nozzles in the print head, so printing, while exact, is extremely slow.
   Users might prefer piping the output of the PostScript  module  through
   ghostscript until this issue is resolved.

   PNG:  Support for the Portable Network Graphics format relies on libpng
   which is available from www.libpng.org.

   PRE: Preview on all machines. Use options -h -w -o -O -C to define  the
   screen  size  and  position  of  your  output  (-o -O -C may not always
   apply).  Under X11, you can pan around an image that is larger than the
   screen  size  by  'dragging' it with the mouse (pressing button 1 while
   moving the mouse in the desired direction). Any other mouse  button  or
   keyboard  key  will terminate the preview.  For VGA cards (DOS), option
   -V VGAmode gives you a simple way to utilize SVGA  modes.  Please  take
   care not to define larger windows than your graphics device can handle,
   as the results are unpredictable. As hp2xx uses standard BIOS calls  to
   set  pixels on VGA cards (slow but portable), you can select any hi-res
   mode supported by your system by simply specifying the mode  byte  with
   this option.

   TIFF:  The  tagged  image file format is supported by most graphics and
   image manipulation programs. Support for TIFF in hp2xx  relies  on  the
   TIFF library available from www.libtiff.org, which offers several means
   of image compression.  The -S commandline option selects  between  them
   as  follows:  -S  0  or  -S  1:  no  compression  -S 2: RLE (run length
   encoding) -S 3: Group 3 FAX (monochrome) -S 4: Group 4 FAX (monochrome)
   -S  5:  GIF (not available by default, because of the UNISYS patent) -S
   6: JPEG ('old' TIFF 6.0 style) -S 7: JPEG -S 8: deflate


    % hp2xx -m pcx -f my_output.pcx -d300 -p2222 -h50 -a 1.2 my_input.hp

      creates a PCX file at 300 DPI of height 50 mm, using an aspect factor
      of 1.2 and a pen size of 2 pixels for pens 1-4.

    % my_hpgl_generator | hp2xx -f- -o20 -O30 -F -q | lpr -P my_PCL_printer

      HPGL output is piped through hp2xx; the resulting PCL code is piped to
      the printer queue, giving an image of height 100 mm at 75 DPI.
      An additional left margin of 20mm and upper margin of 30mm is created.
      A formfeed will be added (handy if your printer queue does not).

    % hp2xx my_input.hp

      Preview on screen or into window.


    Heinz W. Werntges, Physikal. Biologie, Geb. 26.12,
    D-40225 Duesseldorf, Germany.


    Martin Kroeker, daVeg GmbH,
    Schottener Weg 2
    D-64289 Darmstadt, Germany.
    mk@daveg.com or martin@ruby.chemie.uni-freiburg.de

    ATARI features & PIC, PAC, IMG modes are due to Norbert Meyer, Duesseldorf.
    AMIGA version & PBM mode are due to Claus Langhans, Kelkheim (Ts.)
    X11 previewer is due to Michael Schoene, Duesseldorf.
    Thanks for VAX support and a lot of testing to
      Michael Schmitz & Gerhard Steger, Duesseldorf
    Many OS/2 helps were due to Host Szillat, Berlin.
    (Later contributors: See TEXINFO file).


   The number of ignored and/or unknown HPGL commands is given.  You  will
   be  informed if swapping starts. Progress is indicated by a logarithmic
   count of internal vectors during scanning  and  plotting,  or  by  dots
   during  (raster  mode)  output,  where  each dot corresponds to 10 scan


   There still are many non-implemented HPGL commands.

   The color assignment  of  some  X11  servers  leaves  something  to  be

   Color is only partially supported (not all possible formats).

   VGA preview: Color "magenta" shows as brown on some VGA cards.

   To  match  the  specified sizes on your display during preview, you may
   have to calibrate it using -d  -D,  e.g.  by  overwriting  the  75  DPI

   Only  little testing has been done on TeX-related and ATARI formats, so
   be prepared for bugs there, and PLEASE report them --  thank you!


   bm2font(1), F. Sowa's raster-to-TeXfont converter.

                              6 May 2001                          hp2xx(1)


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.

Free Software

Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.

Free Books

The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.