{
    "mode": "man",
    "parameter": "pbmtoppa",
    "section": "1",
    "url": "https://www.chedong.com/phpMan.php/man/pbmtoppa/1/json",
    "generated": "2026-08-31T12:32:43Z",
    "synopsis": "pbmtoppa [pbmfile [ppafile]]",
    "sections": {
        "NAME": {
            "content": "pbmtoppa - convert PBM image to HP Printer Performance Architecture (PPA)\n\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "pbmtoppa [pbmfile [ppafile]]\n\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This program is part of Netpbm(1).\n\npbmtoppa converts page images in PBM format to Hewlett Packard's PPA (Printer Performance Ar‐\nchitecture) format, which is the data stream format expected by some HP \"Windows-only\" print‐\ners  including the HP Deskjet 820C series, the HP DeskJet 720 series, and the HP DeskJet 1000\nseries.\n\npbmfile is the file specification of the input file or - for Standard Input.  The default is\nStandard Input.\n\nThe input file contains one or more PBM images, with each one being a single page.  Each  im‐\nage  must  have  the  exact dimensions of a page (at 600 pixels per inch in both directions).\nSignificantly, this is the format that Ghostscript produces.\n\nppafile is the file specification of the output file or - for Standard Output.  The  default\nis Standard Output.\n\nTo  print  Postscript on an HP PPA printer, just use Ghostscript with the pbmraw (or pbm) de‐\nvice driver.\n\nYou can generate a test page for use with this program with pbmpage.\n\nYou can also set up a printer filter so you can submit  PBM  input  directly  to  your  print\nqueue.   See  the  documentation for your print spooler for information on how to do that, or\nlook in hp820install.doc for an example lpd print filter for Postscript and text files.\n\nSometimes, pbmtoppa generates a file which the printer will not print (because pbmtoppa's in‐\nput is unprintable).  When this happens, all three lights blink to signal the error.  This is\nusually because there is material outside of the printer's printable area.  To make the  file\nprint, increase the margins via pbmtoppa options or a configuration file.  See \u001b]8;;#calibration\u001b\\the section on\ncalibration\u001b]8;;\u001b\\  below.\n\n",
            "subsections": [
                {
                    "name": "About PPA",
                    "content": "The  PPA  printer  language  is  a  far  lower  level language than most.  When you use a PPA\nprinter, most of the processing that a conventional printer does is done instead on the  com‐\nputer end of the wire.  In particular, pbmtoppa has to do \"swath cutting,\" and \"sweep format‐\nting,\"  which  other  printers do themselves.  There is very little intelligence inside a PPA\nprinter; pbmtoppa generates direct controls for the printer's hardware.\n\nThe design goal of PPA was to reduce the cost of a printer by exploiting computing  resources\nalready present in the computer that requests the printing.  CPU power, ROM, and RAM require‐\nments inside the printer are all reduced compared to a conventional printer.\n\nPPA  was  new  in  1997.  It was preceded by Hewlett Packard's PCL (Printer Control Language)\nlanguage.  HP manufactured PPA printers for only a few years, and no one else ever did.\n\n"
                }
            ]
        },
        "OPTIONS": {
            "content": "In addition to the options common to all programs based on libnetpbm  (most  notably  -quiet,\nsee \u001b]8;;index.html#commonoptions\u001b\\ Common Options\u001b]8;;\u001b\\ ), pbmtoppa recognizes the following command line options:\n\n\n",
            "subsections": [
                {
                    "name": "-v _",
                    "content": "printer version (720, 820, or 1000)\n\n",
                    "flag": "-v"
                },
                {
                    "name": "-x _",
                    "content": "horizontal offset adjustment in 1/600 inches.\n\n",
                    "flag": "-x"
                },
                {
                    "name": "-y _",
                    "content": "vertical offset adjustment in 1/600 inches.\n\n",
                    "flag": "-y"
                },
                {
                    "name": "-t _",
                    "content": "top margin in 1/600 inches    (default: 150 = 0.25 inch)\n\n",
                    "flag": "-t"
                },
                {
                    "name": "-l _",
                    "content": "left margin in 1/600 inches   (default: 150 = 0.25 inch)\n\n",
                    "flag": "-l"
                },
                {
                    "name": "-r _",
                    "content": "right margin in 1/600 inches (default: 150 = 0.25 inch)\n\n",
                    "flag": "-r"
                },
                {
                    "name": "-b _",
                    "content": "bottom margin in 1/600 inches (default: 150 = 0.25 inch)\n\n",
                    "flag": "-b"
                },
                {
                    "name": "-s _",
                    "content": "paper size: us or a4.  Default is us.\n\n",
                    "flag": "-s"
                },
                {
                    "name": "-d _",
                    "content": "",
                    "flag": "-d"
                },
                {
                    "name": "-f _",
                    "content": "Read parameters from the configuration file named cfgfile.  See \u001b]8;;#configfile\u001b\\CONFIGURATION FILES\u001b]8;;\u001b\\\n\n\n\nThe  offset adjustments you specify with -x and -y accumulate.  I.e. if you specify them mul‐\ntiple times, the total offset adjustment is the sum of the adjustments you specify.  -x 60 -x\n120 is the same as -x 180.\n\nThe -v option undoes any preceding -x and -y options, leaving the horizontal and vertical ad‐\njustments their default values.\n\n\n",
                    "flag": "-f"
                }
            ]
        },
        "CONFIGURATION FILES": {
            "content": "You can use a configuration file to specify parameters rather than  use  invocation  options.\npbmtoppa  processes the file /etc/pbmtoppa.conf, if it exists, before processing any options.\nIt then processes each configuration file named by a -f option in order, applying the parame‐\nters from the configuration file as if they were invocation options used in the place of  the",
            "subsections": [
                {
                    "name": "-f",
                    "content": "Configuration files have the following format:\n\n#Comment\nkey1 value1\nkey2 value2\n[etc.]\n\n\nValid  keys  are version, xoffset, yoffset, topmargin, leftmargin, rightmargin, bottommargin,\npapersize, or any non-null prefix of these words.  Valid values are the same as with the cor‐\nresponding invocation parameters.\n\n",
                    "flag": "-f"
                }
            ]
        },
        "EXAMPLES": {
            "content": "Print a test pattern:",
            "subsections": [
                {
                    "name": "pbmpage | pbmppa >/dev/lp1",
                    "content": "Print three pages:"
                },
                {
                    "name": "cat page1.pbm page2.pbm page3.pbm | pbmppa >/dev/lp1",
                    "content": "Print the Postscript file myfile.ps:\ngs -sDEVICE=rawpbm -q -dNOPAUSE -r600 \\\n-sOutputFile=- myfile.ps ;\\\n| pbmtoppa | lpr\n\n\n"
                }
            ]
        },
        "CALIBRATION": {
            "content": "To be able to print successfully and properly, you need to tell pbmtoppa an X and a Y  offset\nappropriate  for your printer to use when generating the page.  You can specify these offsets\nwith the -x and -y invocation options or with the xoff and yoff parameters in a pbmtoppa con‐\nfiguration file.\n\nTo determine the correct offsets, use the pbmpage program.\n\nIf while trying to do this calibration, the printer refuses to print a page, but just  blinks\nall  three lights, specify large margins (e.g. 600 pixels -- one inch) via pbmpage invocation\noptions while doing the calibration.\n\nFor example:",
            "subsections": [
                {
                    "name": "pbmpage | pbmtoppa >/dev/lp1",
                    "content": "or"
                },
                {
                    "name": "pbmpage | pbmtoppa | lpr -l",
                    "content": "(if your printer filter recognizes the '-l' (direct output) parameter).\n\nIn the test pattern, the grid is marked off  in  pixel  coordinate  numbers.   Unfortunately,\nthese  coordinates  are  probably cut off before the edge of the paper.  You'll have to use a\nruler to estimate the pixel coordinate of the left and top edges of the actual sheet of paper\n(should be within +/- 300, may be negative; there are 600 pixels per inch).\n\nAdd these coordinates to the X and Y offsets by either editing the configuration file or  us‐\ning the -x  and -y command-line parameters.\n\nWhen  pbmtoppa  is properly calibrated, the center mark should be in the center of the paper.\nAlso, the margins should be able to be as small as 1/4 inch without causing  the  printer  to\nchoke with 'blinking lights syndrome'.\n\n"
                }
            ]
        },
        "RED HAT LINUX INSTALLATION": {
            "content": "RedHat  users may find the following tip from Panayotis Vryonis <vrypan@hol.gr> helpful.  The\nsame should work for the 820 and 1000, but it hasn't been tested.  Also, use the  pbmraw  GS‐\nDriver if you have it; it's faster.\n\nHere is a tip to integrate HP720C capability in RedHat's printtool:\n\nInstall pbmtoppa. Copy pbmtoppa to /usr/bin.\n\nEdit  \"printerdb\" (in my system it is found in /usr/lib/rhs/rhs-printfilters ) and append the\nfollowing lines:\n\n\n----------------------Cut here-----------------------\n\nStartEntry: DeskJet720C\nGSDriver: pbm\nDescription: {HP DeskJet 720C}\nAbout: { \\\nThis driver drives the HP DeskJet 720C \\\ninkjet printer. \\\nIt cannot do color printing. \\\nIMPORTANT! Insert \\\n\"- | pbm2ppa -\" \\\nin the \"Extra GS Options \" field.\\\n}\n\nResolution: {600} {600} {}\n\nEndEntry\n----------------------------------------------------\n\n\n\nNow you can add an HP720C printer just like any other, using printtool.\n\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "pbmpage(1), pstopnm(1), pbm(1)\n\nThis program was derived from pbm2ppa.  pbm2ppa is obsolete and has been replaced by pnm2ppa,\nwhich does the same things as pbmtoppa except it also works with color and has lots more fea‐\ntures.  See \u001b]8;;http://pnm2ppa.sourceforge.net\u001b\\http://pnm2ppa.sourceforge.net\u001b]8;;\u001b\\  for more information about the PPA  protocol  and\nthe separately distributed pnm2ppa program.\n\nThe  file  INSTALL-MORE in the pbmtoppa directory of the Netpbm source code contains detailed\ninstructions on setting up a system to use pbmtoppa to allow convenient printing  on  HP  PPA\nprinters.  It was written by Michael Buehlmann.\n\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Tim Norman.  Copyright (C) 1998.  Licensed under GNU General Public License\n\nManual page by Bryan Henderson, May 2000.\n",
            "subsections": []
        },
        "DOCUMENT SOURCE": {
            "content": "This  manual  page  was  generated by the Netpbm tool 'makeman' from HTML source.  The master\ndocumentation is at\n\nhttp://netpbm.sourceforge.net/doc/pbmtoppa.html\n\nnetpbm documentation                         01 May 2005                     Pbmtoppa User Manual(1)",
            "subsections": []
        }
    },
    "summary": "pbmtoppa - convert PBM image to HP Printer Performance Architecture (PPA)",
    "flags": [
        {
            "flag": "-v",
            "long": null,
            "arg": null,
            "description": "printer version (720, 820, or 1000)"
        },
        {
            "flag": "-x",
            "long": null,
            "arg": null,
            "description": "horizontal offset adjustment in 1/600 inches."
        },
        {
            "flag": "-y",
            "long": null,
            "arg": null,
            "description": "vertical offset adjustment in 1/600 inches."
        },
        {
            "flag": "-t",
            "long": null,
            "arg": null,
            "description": "top margin in 1/600 inches (default: 150 = 0.25 inch)"
        },
        {
            "flag": "-l",
            "long": null,
            "arg": null,
            "description": "left margin in 1/600 inches (default: 150 = 0.25 inch)"
        },
        {
            "flag": "-r",
            "long": null,
            "arg": null,
            "description": "right margin in 1/600 inches (default: 150 = 0.25 inch)"
        },
        {
            "flag": "-b",
            "long": null,
            "arg": null,
            "description": "bottom margin in 1/600 inches (default: 150 = 0.25 inch)"
        },
        {
            "flag": "-s",
            "long": null,
            "arg": null,
            "description": "paper size: us or a4. Default is us."
        },
        {
            "flag": "-d",
            "long": null,
            "arg": null,
            "description": ""
        },
        {
            "flag": "-f",
            "long": null,
            "arg": null,
            "description": "Read parameters from the configuration file named cfgfile. See \u001b]8;;#configfile\u001b\\CONFIGURATION FILES\u001b]8;;\u001b\\ The offset adjustments you specify with -x and -y accumulate. I.e. if you specify them mul‐ tiple times, the total offset adjustment is the sum of the adjustments you specify. -x 60 -x 120 is the same as -x 180. The -v option undoes any preceding -x and -y options, leaving the horizontal and vertical ad‐ justments their default values."
        }
    ],
    "examples": [
        "Print a test pattern:",
        "Print three pages:",
        "Print the Postscript file myfile.ps:",
        "gs -sDEVICE=rawpbm -q -dNOPAUSE -r600 \\",
        "-sOutputFile=- myfile.ps ;\\",
        "| pbmtoppa | lpr"
    ],
    "see_also": [
        {
            "name": "pbmpage",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/pbmpage/1/json"
        },
        {
            "name": "pstopnm",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/pstopnm/1/json"
        },
        {
            "name": "pbm",
            "section": "1",
            "url": "https://www.chedong.com/phpMan.php/man/pbm/1/json"
        }
    ],
    "tldr": {
        "source": "official",
        "description": "Convert a PBM image to HP Printer Performance Architecture format.",
        "examples": [
            {
                "description": "Convert a PBM image into a PPA file",
                "command": "pbmtoppa {{path/to/image.pbm}} > {{path/to/output.ppa}}"
            },
            {
                "description": "Specify the desired dots-per-inch and paper size",
                "command": "pbmtoppa -d {{300}} -s {{a4}} {{path/to/image.pbm}} > {{path/to/output.ppa}}"
            }
        ]
    }
}