Welcome to Linux Knowledge Base and Tutorial
"The place where you learn linux"

 Create an AccountHome | Submit News | Your Account  

Tutorial Menu
Linux Tutorial Home
Table of Contents

· Introduction to Operating Systems
· Linux Basics
· Working with the System
· Shells and Utilities
· Editing Files
· Basic Administration
· The Operating System
· The X Windowing System
· The Computer Itself
· Networking
· System Monitoring
· Solving Problems
· Security
· Installing and Upgrading
· Linux and Windows

Man Pages
Linux Topics
Test Your Knowledge

Site Menu
Site Map
Copyright Info
Terms of Use
Privacy Info
Masthead / Impressum
Your Account

Private Messages

News Archive
Submit News
User Articles
Web Links


The Web

Who's Online
There are currently, 65 guest(s) and 0 member(s) that are online.

You are an Anonymous user. You can register for free by clicking here




       gs [options] [files]
       option ::= prn_option | hpdj_option

       prn_option can be any option defined for ghostscript's prn
       (printer)  device.   This  includes all device-independent
       options described in gs(1).  You  should  also  look  into
       ghostscript's extended documentation (file Use.htm/use.txt
       and the section  Device  parameters  in  Language.htm/lan­
       guage.txt).   hpdj  does  not support the Duplex parameter
       and it determines the correct value for BitsPerPixel auto­

       hpdj_option ::= -dBlackLevels=integer |
           -dCMYLevels=integer | -sColorMode=mode |
           -sColourMode=mode | -dCompressionMethod=method |
           -dDryTime=seconds | -dManualFeed[=boolean] |
           -sMarginFile=pathname | -sMediaType=type |
           -sModel=model | -sPagecountFile=pathname |
       mode ::= mono | CMY | CMY+K | CMYK
       method ::= 0 | 1 | 2 | 3 | 9
       boolean ::= false | true
       type ::= plain | bond | Premium | glossy | transparency |
           photo | integer
       model ::= 500 | 500C | 510 | 520 | 540 | 550C | 560C |
           850C | 855C | unspec
       quality ::= draft | normal | presentation | integer

       Case  is  significant.   Note  that  some  options must be
       passed as strings (-s) and others as general tokens  (-d).
       You  should  also keep in mind that gs effectively ignores
       every option it does not recognize,  hence  some  care  in
       spelling parameter names is necessary.

       Some options have synonyms for values which are listed on­
       ly in the detailed description below.


       The ghostscript device driver hpdj is a ghostscript  back­
       end  for  printers understanding Hewlett-Packard's Printer
       Command Language, level 3+ (PCL 3+).  It  is  intended  to
       support in particular the following printer models:

           HP DeskJet 500
           HP DeskJet 500C
           HP DeskJet 510
           HP DeskJet 520

       PPA printer with ghostscript, but not through hpdj.

       Different  printer models usually implement model-specific
       subsets of all PCL-3+ commands or arguments  to  commands.
       You  must  therefore tell the driver by means of the Model
       option for which model the generated PCL code is intended.
       The  model-dependent  difference  in the generated code is
       not great.  Apart from margin  specifications  and  colour
       capabilities,  one  can  consider  three  groups of models
       which are treated with significant differences:

           5xx except 500 and 540,
           540 and 8xx.

       The third group  is  the  one  I  refer  to  as  the  "new
       DeskJets" below.

       If  you  have  a  PCL-3  printer not appearing in the list
       above, the likelihood is still good that  it  will  accept
       the  files  generated by hpdj.  You can specify one of the
       supported models in these cases (it is sufficient  to  try
       one  each from the groups just mentioned), or use the spe­
       cial model name unspec which is treated like a new DeskJet
       with all model-dependent checks having been turned off.

       I have received reports that hpdj works with the following

           HP DeskJet 340
           HP DeskJet 500
           HP DeskJet 500C (tested for mono only)
           HP DeskJet 520
           HP DeskJet 540
           HP DeskJet 560C
           HP DeskJet 600
           HP DeskJet 660C/660Cse
           HP DeskJet 670C
           HP DeskJet 672C
           HP DeskJet 680C
           HP DeskJet 690C
           HP DeskJet 690C+
           HP DeskJet 693C
           HP DeskJet 694C
           HP DeskJet 850C
           HP DeskJet 855C
           HP DeskJet 870Cse/870Cxi
           HP DeskJet 880C
           HP DeskJet 890C
           HP DeskJet 895Cse/Cxi
           HP DeskJet 1100C
           HP DeskJet 1120C

         · printer model
         · gs version
         · hpdj version
         · option combinations successfully  tested  (specify  at
           least model, resolution, colour mode and, if used, the
           number of intensity levels)
         · printer-specific functionality you could not access

       So far I have not heard of a PCL-3+ printer  which  cannot
       be  driven  by hpdj.  Hence the really interesting part of
       success reports is the list  of  working  option  combina­
       tions, but since I included the above request in this man­
       ual page in December 1997, hardly anyone has sent me  such
       a  report.  Possibly, users find this information unneces­

   Colour Modes
       Ignoring photo cartridges, DeskJet printers can be classi­
       fied in four categories:

       · The printer has only a black ink cartridge.

       · The  printer can print with either a black or a cyan/ma­
         genta/yellow (CMY) cartridge.

       · The printer holds a CMY and a black cartridge simultane­
         ously,  but  the  inks  are  chemically incompatible and
         should not be overlayed.  (Don't worry: the  printer  is
         not  going to explode if they do.  You merely get poorer
         results because the black ink will spread  further  than
         it should.)

       · The printer holds a CMY and a black cartridge simultane­
         ously and the inks can be mixed.

       This leads to four colour modes for the driver:

       mono:   Print in black.

       CMY:    Print in cyan, magenta and yellow only.   In  this
               mode,  "composite  black"  consisting of all three
               inks is used to stand in for true black.

       CMY+K:  Print with all four inks, but never mix black with
               one of the others.

       CMYK:   Print with all four inks.

       Depending  on the category of the model chosen, the driver
       will accept one or more of these modes.  The possibilities

       ty.   For  older  DeskJets  (500, 500C, 510, 520, 550C and
       560C), similar effects can be achieved by specifying  some
       technical aspects of the printing process in detail.

       The  hpdj driver accepts only the new Media Type and Print
       Quality specifications as options.  For printers  not  un­
       derstanding  the  new  commands,  these specifications are
       mapped to  the  older  Depletion,  Shingling,  and  Raster
       Graphics  Quality  commands  based on recommendations from

   Media Sizes and Orientations
       Ghostscript looks at several sources to determine the page
       size for a document:

         · the  default size set for gs (usually US Letter or ISO
         · the value given to -sPAPERSIZE in the invocation
         · the size requested by the document, unless you specify

       The  last  applicable item in this list overrides the oth­

       The driver knows which media sizes are supported  by  each
       printer  model  and will refuse to print if an unsupported
       one is requested.  The model unspec normally  accepts  all
       sizes,  and  it assumes the printer to understand all size
       commands which can be sent to one  of  the  supported  se­
       ries-800 DeskJets.  This can be changed with a margin file
       specification; see the CONFIGURATION section below for de­

       Each supported size is available in portrait and landscape
       orientation.  Media should however always be put into  the
       input   tray  independent  of  the  intended  orientation.
       Ghostscript and hpdj will take care of the rest.  Hewlett-
       Packard's information on the required orientation of media
       in the input tray is not quite clear, but hpdj assumes  it
       to  be always "short edge first" with respect to the feed­
       ing direction.  You should  check  your  printer's  manual
       whether  this  is  correct,  in  particular  if you have a
       DeskJet 400, 500 or 500C and wish to print  on  envelopes.
       Note  that  hpdj has no information about the dimension or
       orientation of the medium in the input tray: you must  en­
       sure yourself that this is appropriate.

       In setting up the PostScript default user space, hpdj does
       not treat envelope sizes differently.

   Diagnostic Messages
       Error messages issued by hpdj start with "? Device hpdj:",
           lected  accepts  the given resolution unless the model
           is unspec.  Resolutions supported by at least some  of
           the  models  in  some of the colour modes are 75, 100,
           150, 300 and 600 ppi.   Only  unspec  permits  unequal
           horizontal  and  vertical  resolutions.  For this case
           read the subsection on the Configure Raster Data  com­
           mand  in the LIMITATIONS section below first.  The de­
           fault resolution for hpdj is set at compile time, usu­
           ally to 300 ppi.

       The following options are specific to hpdj:

       -dBlackLevels=levels and -dCMYLevels=levels
           Warning!  These options are not based on HP documenta­
           tion!  Read the subsection on the Configure Raster Da­
           ta command in the LIMITATIONS section below before us­
           ing them.

           These options set the number of intensity  levels  per
           pixel  and colorant to use when printing with black or
           CMY inks, respectively, and must  be  consistent  with
           the  colour  mode.   They  permit access to the Colour
           Resolution  Enhancement  technology  (C-REt)   feature
           available  in  some series-800 DeskJets.  The defaults
           are 0 or 2, depending on the colour mode chosen.  Oth­
           er  values are only accepted for the models 850C, 855C
           and unspec.  I strongly suggest that you  apply  gamma
           correction  and  modify  the halftone screens whenever
           you use non-default values for these options (see  the
           CONFIGURATION section below).

           unspec  accepts  any non-negative number of levels ex­
           cept 1 up to 256.  The models 850C and 855C accept the
           levels  0,  2, 3 and 4 with the following restrictions
           if any of the levels is larger than 2:
             · You can't use this feature with draft quality.
             · You can't use a colour mode of CMY.
             · You must use a resolution of 300 ppi.
             · If you are using a non-monochrome mode,  you  must
               use 4 levels for black.
           When  using  the  model  unspec  you should expect the
           printer to similarly limit the possibilities.  So  far
           I  have  not heard of a PCL-3+ printer supporting more
           than four intensity levels per colorant.

           Unfortunately,  there  is  a  problem   here   because
           ghostscript's  internal  colour  model is not prepared
           for the situation where a device can render  different
           small (< 32) numbers of intensity levels for different
           colorants.  In this situation gs will in  general  as­
           sume  that  the  number  of  black levels available is
           equal to that for CMY levels.  Depending on  which  of
           the model, see Colour Modes in the section DESCRIPTION

           A value of CMY for this option also  sets  BlackLevels
           to  zero, and if CMYLevels is zero when you demand any
           of CMY, CMY+K or CMYK, it is set to two.  For all oth­
           er  situations  you  must  ensure yourself that colour
           mode and intensity levels are consistent or hpdj  will
           complain.   This  rule implies that you can ignore the
           level options unless you want  to  use  a  non-default
           number of levels.

           The  PostScript  page device dictionary entry Process­
           ColorModel will not be correct for a  colour  mode  of
           CMY or CMY+K.

           PCL  interpreters understand several compression meth­
           ods for raster graphics data  in  order  to  speed  up
           host-printer communication.  The possible choices are:

             0  Unencoded, non-compressed
             1  Runlength encoding
             2  Tagged Image File Format (TIFF)
             3  Delta Row Compression
             9  Compressed Replacement Delta Row Encoding

           The default method is set at compile time, usually  to
           9.   Requesting  method 3 actually leads to a combina­
           tion of methods 2 and 3.  The  DeskJet  500  does  not
           support  method  9.  The driver may temporarily choose
           method 0 if a compressed data sequence would be longer
           than its uncompressed version.

           Compression  rates  can vary drastically, depending on
           the structure of the input.  However, although the ab­
           solute values change, the relative order of efficiency
           between the methods is usually the order of increasing
           method.   In  short:  use  method 9 (3 for the DeskJet

           With the exception  of  the  DeskJets  500  and  500C,
           DeskJet  printers  can  be told to guarantee a minimum
           drying time of delay seconds before the next  page  of
           the same print job is dropped on a newly printed page.
           (This interval  can  be  terminated  by  pressing  the
           Load/Eject  button.)   The printer will choose default
           values depending on the current print  quality,  hence
           it  is  normally  not necessary to specify this option
           and the feature is even considered obsolete for  newer
           DeskJets  although  it  is  still supported by some of
           used  or  the  medium has to be inserted into an input
           slot holding only one sheet at a  time.   The  default
           setting for this option is false except for series-500
           DeskJets printing on envelope sizes when it is true.

           Note that for current ghostscript versions  this  set­
           ting is independent of the value of the PostScript op­
           erator manualfeed in statusdict.  If you want  to  set
           manual  feeding  from  the  PostScript  code  you must
           therefore use the ManualFeed entry in the page  device

           This option must specify an existing file containing a
           list of supported media sizes and corresponding margin
           descriptions  for  the printer.  This will take prece­
           dence over the builtin model-specific lists  of  sizes
           and  margins.   The format of the file is described in
           the CONFIGURATION section below.  The default  is  not
           to  use a margin file but the builtin lists.  This op­
           tion is primarily intended to be used with  the  model

           A  margin  file  path can also be specified at compile
           time overriding the default behaviour for unspec only.
           Using  the MarginFile option in addition will override
           the compiled-in margin file path.

           This option selects (you guessed it) the type of medi­
           um you wish to print on.  The possible choices are:

               0  plain paper
               1  bond paper
               2  HP Premium paper
               3  glossy paper
               4  transparency film
               5  photo paper

           The default is plain paper.  For type, you can specify
           the full strings, the one-word strings resulting  from
           dropping  "paper",  "film",  and  "HP", or an integer.
           Out-of-range numerical values generate a  warning  but
           are passed through to the printer if it is a model un­
           derstanding the  PCL  command  "Media  Type".   If  it
           isn't,  the effect is the same as specifying plain pa­
           per.  The value 5/photo paper is  only  understood  by
           some recent DeskJets (e.g., the DeskJet 690C) and will
           be ignored by older ones.

           This option identifies the printer model for which the

           unspec is intended to be a stop-gap  for  DeskJet-com­
           patible printers not presently supported by this driv­
           er.  For unspec, all model-specific checks (e.g., sup­
           ported  resolutions)  are turned off.  Supported media
           sizes and margin settings are assumed to be  identical
           with  those  for the DeskJets 850C/855C/870C/890C, but
           you can use the MarginFile option or its  compile-time
           equivalent  to  override this.  The PCL code generated
           assumes a "new" DeskJet in the sense that it should be
           at  least at the level of a DeskJet 540 supporting the
           PCL commands Media Type and  Print  Quality.   If  you
           specify unequal horizontal and vertical resolutions or
           more than two levels of intensity per colour and  pix­
           el,  the  printer must in addition understand the Con­
           figure Raster Data command.  Read  the  subsection  on
           that command in the LIMITATIONS section below.

           If  you choose to use unspec it is your responsibility
           to ensure that hpdj is only called with parameter val­
           ues  the printer can handle.  This applies in particu­
           lar to the resolution and the intensity levels.

           The pathname must specify either a  non-existent  file
           in  a  directory  with  write permission or a writable
           file with a single line containing a non-negative  in­
           teger.   In  the first case, hpdj will create the file
           and insert the number of pages processed, in the  sec­
           ond  case  the  number  will  be  incremented  by that
           amount.  Parallel invocations of gs are  permitted  to
           use  the  same  file.  hpdj will also make the initial
           page count available in its  page  device  dictionary.
           Note   that   in   present  ghostscript  versions  the
           PostScript operator pagecount in statusdict always re­
           turns  4711 and is not based on the value of PageCount
           in the page device dictionary.

           This option is mainly intended  for  spooler  backends
           calling hpdj.  It can be used to keep track of the to­
           tal number of pages printed and also for  per-job  ac­
           counting.  I recommend using this option for the first
           purpose and to make a note of the values  in  the  re­
           sulting files whenever you insert a new ink cartridge.
           This will enable you to get an indication of how  much
           a  printed page costs and why it is a good idea to use
           draft quality whenever possible.

           The driver can be compiled without this option present
           but  on  a  UNIX  system I would not expect this to be
           done unless gs offers  the  same  functionality  in  a
           driver-independent manner which it currently does not.
           it is a model understanding  the  PCL  command  "Print
           Quality".   If  it  isn't,  the  effect is the same as
           specifying normal.

   Looking up Compile-Time Defaults
       Some default values for options can be chosen  at  compile
       time.   If  you later want to know these values, run gs on
       the following PostScript code:

           dup /Name get (hpdj) eq not
             (ERROR: You have not selected the hpdj driver.) =
             (Model: ) print
             dup /Model get =

             (Resolution: ) print
             dup /HWResolution get ==

             (Compression method: ) print
             dup /CompressionMethod get =

             (Margin file: ) print
             dup /MarginFile get
             dup () eq
             {pop (none)} if

             (PagecountFile is ) print
             dup /PagecountFile known not
             {(not ) print} if
             (supported.) =
           } ifelse

       Note that this will not necessarily  return  the  compile-
       time  defaults  but only the values current at the time of
       execution.  Therefore you should not specify  any  options
       except  -sDEVICE=hpdj  and, if your ghostscript executable
       has been compiled without a default model for hpdj  or  if
       you want to find out whether there is a compiled-in margin
       file path, -sModel=unspec.  You should also make sure that
       you   have   not   set   environment  variables  modifying
       ghostscript's behaviour.


   Margin Description File
       A margin description file (margin file for short)  can  be
       choose  a  larger and printer-supported size in PostScript
       or via -dFIXEDMEDIA, shift the image if necessary,  estab­
       lish  properly-positioned clipping regions within the real
       size, and print.  However, if you  have  a  newer  DeskJet
       supporting  custom  page sizes, this is not necessary (see

       Margin specifications are important for two  reasons:  the
       values for the left and top margins determine how the out­
       put is positioned on the page, and sufficiently large val­
       ues  for  the  right  and bottom margins prevent the print
       head being caught at the paper's edge and printing  beyond
       the  sheet,  respectively.  Because DeskJet printers often
       have  an  inconveniently  large  bottom  margin   (usually
       0.4-0.8 inches or 10-20 mm), one might be tempted to spec­
       ify smaller values than listed in  the  printer's  manual.
       However,  one  user  reported that this led to the printer
       depositing a large wet blob of black ink at the bottom  of
       the  page.  Specifying a smaller margin on the right is in
       contrast  probably  harmless  because,  according  to  HP,
       DeskJet printers always clip at that margin.

       A  line  in  the  margin file can be blank, a comment line
       (first non-blank character is '#'), or one of the  follow­

           unit unit
           code  left bottom right top

       A unit line specifies in which units margin specifications
       in the following lines should be interpreted.  unit can be
       either  in or mm with in being the default.  A unit speci­
       fication remains in force until overridden by a  following
       unit line.

       The  second  kind of line states that the model supports a
       particular page size, identified  by  its  PCL  page  size
       code,  and  specifies  the  margins in force for that size
       when printing in black, in raster graphics  mode,  and  in
       portrait orientation for the medium (width <= height).  Be
       careful with envelopes: older (pre-1997) HP  documentation
       frequently  gives  their margins in landscape orientation;
       you can check this by looking for the largest margin  val­
       ue:  in  portrait  orientation it should be at the bottom.
       The margins have to be specified as floating point numbers
       in  inches or millimetres as announced by the last preced­
       ing unit line.  The floating point format is that  of  the
       "C"  locale.  Depending on the model, hpdj will either as­
       sume that the same margins apply for colour printing (this
       is the case for unspec) or increase the bottom margin by a
       model-specific amount in that case.

             27   ISO/JIS A3 (297 × 420 mm)
            *45   JIS B5 (182 × 257 mm).
                  This is distinct from ISO B5 (176 × 250 mm).
             46   JIS B4 (257 x 364 mm).
                  This is distinct from ISO B4 (250 × 353 mm).
            *71   Hagaki card (100 × 148 mm)
            *74   US index card 4 × 6 in
            *75   US index card 5 × 8 in
            *81   US no. 10 envelope (4.125 × 9.5 in).
            *90   ISO DL envelope (110 × 220 mm)
            *92   ISO C6 envelope (114 × 162 mm)
           *101   custom page size
            109   US A2 envelope (4.375 × 5.75 in)

       The page size code 101 (custom page size)  is  not  under­
       stood  by  older printers and may be used in a margin file
       only for the models 540, 850C, 855C, and unspec.  In these
       cases you can print, within certain limits, on arbitrarily
       sized media.  The driver knows these limits and refuses to
       generate a file if you exceed them.  For unspec, there are
       no limits.  hpdj will tell the printer to expect a  custom
       page size only if there is no fitting discrete entry.

       Every  margin  file  must  contain at least an entry which
       fits ghostscript's default page size, usually ISO A4 or US
       Letter.  Only those sizes which are listed will be accept­
       ed by hpdj.

       hpdj is distributed with an example of a  margin  descrip­
       tion file, example.mdf.

   PostScript Configuration File
       Sometimes it is desirable to execute additional PostScript
       commands for a particular file or possibly all files  sent
       to  a particular printer or print queue.  With ghostscript
       this is easily possible because gs accepts  several  files
       in the invocation and executes them sequentially.  This is
       particularly appropriate for  those  PostScript  operators
       which affect device-specific features and should therefore
       not appear in a portable page description.

       The hpdj distribution contains an example of an input fil­
       ter  if-hpdj for the BSD spooler lpr(1) permitting the use
       of a print-queue-specific configuration file.

   Correcting Offsets
       A margin description file is intended to adapt hpdj to the
       difference  in  margin settings between printer models and
       should usually contain "official" information,  preferably
       taken from the model's manual.

       A  different  situation  arises  if a particular printer's
       OPTIONS section above).

       As an example, assume your printer shifts its output 1  mm
       to the right and 0.5 mm upwards and the default resolution
       of your version of hpdj is 300 ppi.   Now  create  a  file
       containing either the PostScript code

           << /Margins [-11.8 5.9] >> setpagedevice

       ("shift 11.8 pixels to the left and 5.9 pixels down") or

           << /PageOffset [-2.8 1.4] >> setpagedevice

       ("shift  2.8  bp to the left and 1.4 bp down") and have it
       executed by ghostscript before the file to be printed.  If
       you  specify both, Margins and PageOffset, the total shift
       performed by gs will be the sum of the two.

       The file align.ps in the ghostscript distribution  or  the
       margin test files distributed with hpdj can be used to de­
       termine the necessary correction.   You  should  be  aware
       that  you  have  to expect fluctuations between individual
       print jobs, in particular in the horizontal direction.

   Gamma Correction
       DeskJets usually produce colour prints which are too  dark
       (too  much ink on the page).  In this case you should per­
       form gamma correction by modifying what  PostScript  calls
       transfer  functions.   In the simplest case, create a file
       containing the PostScript command

           {number exp} settransfer

       where a good value for number  is  usually  in  the  range
       0.3-0.5,  and  specify  this file in ghostscript's command
       line before the file you wish to print.  Now the  intensi­
       ties  of  all colorants will be rescaled by exponentiation
       with number.  Because PostScript intensity values  are  in
       the range zero to one with zero meaning dark and one mean­
       ing light (additive interpretation), a value of number < 1
       will  lead  to  lighter  colours and number > 1 results in
       darker colours.

       You can also set independent transfer  functions  for  the
       four  colorants  by  using  the  operator setcolortransfer
       which expects  four  routines  as  arguments.   Consult  a
       PostScript manual if you want to learn more about transfer

       For a device with less than 32 intensity levels  per  col­
       orant,  at  resolutions  below 800 ppi, and unless you ex­
       plicitly set transfer functions, gs applies a default gam­
       look the same.  This is what seems to happen if one prints
       with  4  intensity  levels  for  CMY on plain paper with a
       DeskJet 850C: the fourth level is accepted by the  printer
       but to me it looks indistinguishable from the third.

       In  this  situation  we can compensate for ghostscript not
       correctly dealing with different numbers of black and  CMY
       intensity levels by using PostScript's transfer functions.
       The idea is to specify in the invocation the higher number
       of  levels  for  both, black and CMY, but to map the range
       for those components where actually only a smaller  number
       of  levels  is distinguishable to a reduced range which gs
       will divide into the required (smaller) number  of  inter­
       vals.   Although  the  printer  will be told to expect the
       higher number of intensities, it will never receive  them.
       However, if the assumptions above are correct, the highest
       level it does receive will anyway look  like  the  highest
       level possible!

       For  the case of 4 black and 3 intended CMY levels the CMY
       intensities must be remapped from the range [0, 1] to  the
       range [1/3, 1].  Here's the code, including an equal gamma
       value number for all four components:

           {number exp 2 mul 1 add 3 div}
           dup dup
           {number exp}

       In the call to gs you must now specify a value  of  4  for
       both, BlackLevels and CMYLevels.

       Most printers offer only a small number of intensities per
       colorant and pixel.  In order to generate a  larger  range
       of  colours,  one  therefore employs halftoning which con­
       sists of dividing the pixel  array  into  halftone  cells,
       each of which represents one effective pixel which can now
       display more shades.  This method  trades  resolution  for
       the  number  of shades and applies to all structures which
       have to be painted with a colour which  cannot  be  repre­
       sented  exactly.   At 300 ppi and with a bi-level device a
       typical choice is to use  halftone  cells  of  5×5  pixels
       leading to an effective resolution of 60 ppi and 26 shades
       per component.  These are also ghostscript's default  val­
       ues at 300 ppi.

       Which  kind  of halftoning is appropriate depends not only
       on the printer but also on the  document  to  be  printed.
       For this reason PostScript offers access to the halftoning
       parameters.  You should use this feature in particular  if
       your  printer  supports more than two intensity levels be­
           currenthalftone dup /HalftoneType get 2 eq
               /RedFrequency   frequency def
               /GreenFrequency frequency def
               /BlueFrequency  frequency def
               /GrayFrequency  frequency def
           {pop}  % Not prepared for this case.

       For general applications, reasonable values for  frequency
       on  a 3- or 4-level device at 300 ppi are 75 and 100.  You
       can use the file colorcir.ps in the ghostscript  distribu­
       tion to gain some impression of the effects on the size of
       halftone cells and the number of shades  you  can  distin­
       guish.   Consult  a PostScript manual if you want to learn
       more about how to specify halftones.

       If you are using the colour mode  CMYK  and  more  than  2
       black  levels  you should not set merely a single halftone
       screen (setscreen, a type-1 or a type-3  halftone  dictio­
       nary)  because ghostscript's dithering routine can in this
       case return non-monotonic levels of  black  for  monotonic
       input  intensities.   However,  if you specify independent
       halftone information for the colour components, gs uses  a
       slower  but more accurate algorithm instead which does not
       lead to the wrong behaviour.  It is not necessary for  the
       halftone  information to be different for different compo­
       nents to achieve this.   Note  that  ghostscript  installs
       separate  halftone  screens for CMYK devices by default if
       the resolution is at least 150 ppi.


   Ghostscript Version
       This manual page contains statements  relying  on  undocu­
       mented  features  of ghostscript.  These statements are to
       my  best  knowledge  and  belief  correct  for  at   least
       ghostscript  5.50,  and I hope I've not missed significant
       deviations when testing with older versions.  But I  can't
       of course guarantee anything for newer ones.

   The Rendering Algorithm
       In  ghostscript's  internal  architecture  the ghostscript
       kernel calls on a device driver for basic  drawing  opera­
       tions  and  to  ship out completed pages.  For most if not
       all print devices this process can be separated into  ren­
       dering  in  memory and transferring the resulting array of
       I do not claim that this leaves  nothing  to  be  desired.
       For  example,  there is no possibility in this implementa­
       tion to perform Floyd-Steinberg dithering.  Of course, one
       can  implement  error  diffusion  in  a ghostscript device
       driver and a number of people have done so in printer-spe­
       cific  backends.   I  do not believe, though, that such an
       implementation belongs there: it should better  be  imple­
       mented  in  an improved rendering device.  In that way, it
       could be used for other printer-specific backends as well.
       This  is also true for every other kind of modification of
       the rendering process.  I have therefore deliberately  re­
       stricted  hpdj to be a "purely printing" backend: it knows
       about PCL but not about rendering.

       Therefore, if you need better visual quality for documents
       with  shades  of  grey  or non-primary (non-CMYK) colours,
       this cannot be achieved by giving some tricky  combination
       of  option  values to hpdj.  Instead you should experiment
       with the relevant PostScript operators (see chapter  6  of
       the  PostScript  Language Reference), or ultimately extend
       ghostscript's prn device.

   The Configure Raster Data Command
       There is a new PCL-3+ command called "Configure Raster Da­
       ta" for which until recently I had not been able to obtain
       documentation.  This command is apparently the  basis  for
       supporting  unequal resolutions in horizontal and vertical
       directions and for HP's Color Resolution Enhancement tech­
       nology (C-REt).  Some option values supported by hpdj lead
       to Configure Raster Data being used and must therefore  be
       considered unsafe!

       At  least some of the series-500 DeskJets as well as newer
       models claim to permit unequal resolutions  in  horizontal
       and vertical directions, in particular 600 × 300 ppi.  The
       corresponding implementation in hpdj, available  only  for
       the  model  unspec, is based on Configure Raster Data.  It
       seems to work at least for the DeskJet 690C; it  does  not
       work  for  the  DeskJet 870C (see below).  I would however
       strongly advise against using these resolutions for print­
       ing on a series-500 DeskJet because, although these models
       have a 600 dpi addressable horizontal resolution grid they
       do not permit neighbouring pixels to be activated (and the
       dots printed still have a diameter  of  about  1/300  in).
       The  raster  data  generated  by gs does not obey this re­
       striction.  In addition, it is likely that the higher res­
       olution is anyway only supported for the printer's builtin
       fonts and not for general raster data.

       Concerning the DeskJet 870C, my  impression  is  that  al­
       though  some HP documents and drivers use expressions like
       "600x300 dpi C-REt color" for this printer, the model does
       know,  this  capability  is  only  available in series-800
       DeskJets and it has to be accessed by Configure Raster Da­
       ta.   The  implementation of non-default values for hpdj's
       options BlackLevels and CMYLevels is  therefore  based  on
       Configure  Raster  Data.   It  works  at  least  with  the
       DeskJets 850C, 870C and 890C.

   Performance for Larger Numbers of Intensity Levels
       This could be improved by replacing some generic  routines
       by  more specialized ones for particular parameter values.
       There does not seem much sense in doing this, though,  un­
       til  I  know  that the code in question is needed for some
       printer model.

   Mixed Resolutions
       Newer DeskJets are able to print  with  different  resolu­
       tions for black and CMY on the same region of a page.  For
       example, the best quality on a DeskJet  850C  is  achieved
       with  600 ppi for black and 300 ppi for CMY.  This is also
       due to the new Configure Raster Data command  and  is  not
       supported.   I  suspect that implementing this really well
       in ghostscript is not a simple task and probably  requires
       modifying the ghostscript kernel.

   Photo Cartridges
       From  what  I've  heard,  DeskJet printers with photo car­
       tridges installed do not use a CMYK  palette  but  instead
       one  with 6 components.  I have no official information on
       this interface and ghostscript currently does not  support
       `DeviceN' as a native colour space.

   Cartridge Alignment
       DeskJet  printers with more than one ink cartridge present
       should usually  be  configured  for  the  proper  relative
       alignment  of these cartridges.  Apparently, this informa­
       tion is stored in not-immediately-volatile memory  in  the
       printer  together  with some default settings like the de­
       fault media size which are not relevant for printing  with
       hpdj.   As  I do not have information on how this is done,
       you will need to use one of HP's programs  for  this  pur­

       On  a  Linux  system,  try installing and running HP's DOS
       DeskJet control panel DJCP in the DOS emulator.  I did not
       get  it  to work, but you might have more luck (or skill).
       DJCP should be present on one of  the  installation  media
       you received with your printer.


       I  intend  to  release  a  new version in a few months for
       which I am going to change the name  of  the  driver  from



       Adobe Systems
       PostScript Language Reference
       Third edition, 1999.

       A First Guide to PostScript

       Technical  Reference  Guide  for the HP DeskJet 500 Series
       First  edition,  October   1994.   Manual   Part   Number:

         Unfortunately,  this  guide  does not describe all valid
         commands.  I was told in October 1997 by the German firm
         distributing HP manuals that there is no newer HP manual
         on PCL 3 and that they had even considered  writing  one
         themselves for this reason.


       Copyright  © 1996, 1997, 1998, 1999 by Martin Lottermoser,
       Metzgerfeldweg 9, 85737 Ismaning, Germany.
       E-mail: martin.lottermoser@mch20.sbs.de.

       This is free software, released under the terms of the GNU
       Library  General Public License (LGPL), Version 2.  USE IT

       hpdj has a home  page  at  ftp://ftp.sbs.de/pub/graphics/­
       ghostscript/pcl3/pcl3.html.  The source code for the driv­
       er is available in  the  same  directory,  file  hpdj-ver­
       sion.tar.gz.   You  should, however, keep in mind that the
       name of the driver will change in the future  (see  FUTURE
       DIRECTIONS)  and  this  will of course be reflected in the
       names of files.

hpdj 2.6                    1999-10-16                 GS-HPDJ(1)
Show your Support for the Linux Tutorial

Purchase one of the products from our new online shop. For each product you purchase, the Linux Tutorial gets a portion of the proceeds to help keep us going.



Security Code
Security Code
Type Security Code

Don't have an account yet? You can create one. As a registered user you have some advantages like theme manager, comments configuration and post comments with your name.

Help if you can!

Amazon Wish List

Did You Know?
You can get all the latest Site and Linux news by checking out our news page.


Tell a Friend About Us

Bookmark and Share

Web site powered by PHP-Nuke

Is this information useful? At the very least you can help by spreading the word to your favorite newsgroups, mailing lists and forums.
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters. Articles are the property of their respective owners. Unless otherwise stated in the body of the article, article content (C) 1994-2013 by James Mohr. All rights reserved. The stylized page/paper, as well as the terms "The Linux Tutorial", "The Linux Server Tutorial", "The Linux Knowledge Base and Tutorial" and "The place where you learn Linux" are service marks of James Mohr. All rights reserved.
The Linux Knowledge Base and Tutorial may contain links to sites on the Internet, which are owned and operated by third parties. The Linux Tutorial is not responsible for the content of any such third-party site. By viewing/utilizing this web site, you have agreed to our disclaimer, terms of use and privacy policy. Use of automated download software ("harvesters") such as wget, httrack, etc. causes the site to quickly exceed its bandwidth limitation and are therefore expressly prohibited. For more details on this, take a look here

PHP-Nuke Copyright © 2004 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Page Generation: 0.09 Seconds