Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
GS-PCL3(1)		    General Commands Manual		    GS-PCL3(1)

       pcl3 -- ghostscript device driver for printers understanding PCL	3+

       gs    -sDEVICE=pcl3     [gs_option     |	   -dBlackLevels=integer     |
       -dCMYLevels=integer  |  -sColorModel=model   |  -sColourModel=model   |
       -dCompressionMethod=method   | -dConfigureEveryPage  | -dCUPSAccounting
       | -dCUPSMessages	 | -dDepletion=depletion  | -dDryTime=seconds  | -sDu-
       plexCapability=capability      |	    -sIntensityRendering=method	     |
       -dLeadingEdge=edge  | -dManualFeed  | -sMediaConfigurationFile=pathname
       |  -dMediaPosition=position   | -sMedium=medium	| -dOnlyCRD  | -sPage-
       CountFile=pathname   |  -sPCLInit1=string    |	-sPCLInit2=string    |
       -sPJLJob=jobname	 | -sPJLLanguage=language  | -sPrintQuality=quality  |
       -dRasterGraphicsQuality=quality	| -dSendBlackLast  | -dSendNULs=number
       |  -dShingling=shingling	 | -sSubdevice=subdevice  | -dTumble  |	-dUse-
       Card=value ]  ... [file ...]

   Supported Printers
       The ghostscript device driver pcl3 (formerly called hpdj) is  a	ghost-
       script  backend	for  printers  understanding Hewlett-Packard's Printer
       Command Language, level 3+ ("PCL	3+", also called "PCL 3	 Plus").   The
       driver  is intended to support in particular the	following printer mod-

	      HP DeskJet
	      HP DeskJet Plus
	      HP DeskJet Portable
	      HP DeskJet 310
	      HP DeskJet 320
	      HP DeskJet 340
	      HP DeskJet 400
	      HP DeskJet 500
	      HP DeskJet 500C
	      HP DeskJet 510
	      HP DeskJet 520
	      HP DeskJet 540
	      HP DeskJet 550C
	      HP DeskJet 560C
	      HP DeskJet 600
	      HP DeskJet 660C
	      HP DeskJet 670C
	      HP DeskJet 680C
	      HP DeskJet 690C
	      HP DeskJet 850C
	      HP DeskJet 855C
	      HP DeskJet 870C
	      HP DeskJet 890C
	      HP DeskJet 1120C

       The PCL dialect called "PCL Level 3 enhanced" is	apparently a  not  en-
       tirely compatible modification of PCL 3+.  This driver should basically
       work with such printers but you must be more careful which options  you
       select and you might not	be able	to exploit all your printer's capabil-

       The driver  does	 not  support  printers	 understanding	only  Hewlett-
       Packard's  PPA  (Printing  Performance  Architecture)  commands.	  If a
       printer's documentation does not	say anything about its printer command
       language	 and  you find a statement like	"... is	designed for Microsoft
       Windows"	or "DOS	support	through	Windows	only", the printer  is	almost
       certainly  a  PPA printer and hence is intended exclusively for systems
       running Microsoft Windows.  (These printers are also erroneously	 known
       as  "GDI	 printers"  because they are intended to be accessed through a
       manufacturer-supplied driver via	Windows' GDI interface.)  There	 exist
       ways of using a PPA printer with	ghostscript, but not through pcl3.

       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 Subdevice option for	which model the	gener-
       ated PCL	code is	intended.  The model-dependent difference in the  gen-
       erated code is not great.  Apart	from media specifications, resolutions
       and colour capabilities,	one can	consider three groups of models	 which
       are treated with	significant differences:

	      Group 1	DeskJet, DeskJet Plus, DeskJet 500

	      Group 2	DeskJet	 Portable,  DeskJets  3xx, 400,	5xx except 500
			and 540,

	      Group 3	DeskJets 540, 6xx, 8xx and 1120C.

       The first two groups I call the "old Deskjets", the  third  group  con-
       sists  of "new DeskJets".  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 pcl3.  You can specify one of the supported	subde-
       vices in	these cases (it	is sufficient to try one each from the	groups
       just mentioned),	or use the special subdevice names unspecold or	unspec
       which are treated like members of the second and	the third group	above,
       respectively,  with  all	 subdevice-dependent checks having been	turned

       The list	of printer models for which this driver	is currently known  to
       work is:

	      HP 2000C
	      HP 2500CM
	      HP DeskJet 697C
	      HP DeskJet 850C
	      HP DeskJet 970C
	      HP DeskJet 1100C
	      Xerox DocuPrint M750

       Details	can be found in	the file reports.txt in	the pcl3 distribution;
       its latest version is available via  pcl3's  home  page	(link  to  URL  .   If  you
       wish to report on the hardware compatibility for	a  particular  printer
       model, please read the file how-to-report.txt.

       Omitting	 models	 already  mentioned,  previous (hpdj) versions of this
       driver were reported to work with the following printers:

	      HP DeskJet 340
	      HP DeskJet 400 (tested for Gray only)
	      HP DeskJet 420
	      HP DeskJet 500
	      HP DeskJet 500C (tested for Gray only)
	      HP DeskJet 520
	      HP DeskJet 540
	      HP DeskJet 560C
	      HP DeskJet 600
	      HP DeskJet 610C
	      HP DeskJet 612C
	      HP DeskJet 640C
	      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 832C
	      HP DeskJet 855C
	      HP DeskJet 870Cse/870Cxi
	      HP DeskJet 880C
	      HP DeskJet 890C
	      HP DeskJet 895Cse/895Cxi
	      HP DeskJet 932C
	      HP DeskJet 1120C
	      HP OfficeJet 350
	      HP OfficeJet 590
	      HP OfficeJet 600
	      HP OfficeJet 625
	      HP OfficeJet G55
	      HP OfficeJet T45
	      Lexmark 3000 Color Jetprinter
	      Olivetti JP792 (see the option SendBlackLast)

       Most of the people who sent me reports did not state  to	 which	extent
       hpdj worked for their printer model.

   Colour Models
       Ignoring	 photo	cartridges  which  are	not supported by pcl3, DeskJet
       printers	can be classified in four categories:

	  o  The printer has only a black ink cartridge.

	  o  The printer can print with	either a black or a  cyan/magenta/yel-
	     low (CMY) cartridge.

	  o  The printer holds a CMY and a black cartridge simultaneously, but
	     the two groups of 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.  This is called "ink	bleed-

	  o  The printer holds a CMY and a black cartridge simultaneously  and
	     the  inks	can be mixed.  (Newer HP DeskJets use such bleed-proof

       This leads to four (process) colour models for the driver:

	      Gray	Print in black only.

	      CMY	Print with cyan, magenta and yellow.   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.

       As  a  printer with both, a black and a CMY cartridge, can usually also
       print, e.g., with black only, the printer's  "cartridge	state"	merely
       identifies  one	of  these models as the	maximal	one.  Depending	on the
       category	of the printer,	the driver will	therefore accept one  or  more
       models.	The possibilities are:

	      DeskJet Model			   Colour Models

	      DeskJet,	 DeskJet  Plus,	 DeskJet   Gray
	      Portable,	500, 510, 520
	      310, 320,	340, 400, 500C,	540, 600   Gray, CMY
	      550C, 560C			   Gray, CMY, CMY+K
	      660C,  670C,  680C,  690C,   850C,   all
	      855C, 870C, 890C,	1120C

       The  subdevices	unspecold and unspec also permit all colour models.  A
       printer capable only of CMY might accept	CMY+K or CMYK data,  remapping
       them  to	 CMY,  and  a printer capable of CMY+K might remap CMY data to

       The colour model	CMY+K is not useful if you have	a  CMYK	 printer.   In
       contrast,  if  you  have	a CMY+K	or CMYK	printer	and the	two cartridges
       support different resolutions, the colour models	Gray or	CMY become in-
       teresting  as  well.   In  most	of these cases the black cartridge can
       print at	a higher resolution than the CMY cartridge, although the  con-
       verse  does  also occur.	 In addition, ghostscript is generally fastest
       for Gray.

       PCL 3+ also supports the	colour model RGB although Hewlett-Packard dis-
       courages	 its  use.  For	this model the printer internally converts the
       RGB data	it receives into CMY data for printing.	 Note that not	every-
       thing  which can	be demanded when using a CMY palette in	PCL 3+ is also
       permitted when using RGB.  Because of its limited usefulness, pcl3  ac-
       cepts  the  colour  model RGB only for the subdevices unspecold and un-

   Media Sizes and Orientations
       A PostScript document describes its visible content with	respect	 to  a
       coordinate system called	default	user space.  Almost all	PostScript de-
       vices are page devices which paint only a restricted  rectangular  area
       in default user space.  Part of the state of a page device is therefore
       the current page	size, two numbers specifying the width and  height  of
       the  sheet to be	printed	on.  These values must be interpreted from de-
       fault user space, hence the page	size not  only	describes  the	"sheet
       size"  (extension irrespective of orientation) but also the orientation
       between page contents and sheet (portrait if width <= height, landscape
       otherwise).   The  page	size is	requested by the user or the document,
       and it is one of	the jobs of the	device to satisfy this request.

       Ghostscript looks at several sources to determine the page size:

	  o  the default size configured for gs	(usually US Letter or  ISO  A4
	     in	portrait orientation),

	  o  the value given to	the option PAPERSIZE in	the invocation,

	  o  the size requested	by the document, unless	you specify -dFIXEDME-

       The last	applicable item	in this	list overrides the others,  hence  the
       current page size can change at runtime.

       The  pcl3 driver	splits the page	size into sheet	size and page orienta-
       tion and	passes the sheet size to the printer.  This works only if  the
       printer	accepts	this size (accepted sizes are listed in	your printer's
       manual).	 For the explicitly supported printers,	the driver knows which
       sizes  are  accepted  and will refuse to	print if an unsupported	one is
       requested.  (If you suspect that	pcl3 is	in error  concerning  what  is
       supported,  check  the  list of supported sizes in the PPD file for the
       subdevice you are using.)  Group-3 printers also	accept a  custom  page
       size command which permits printing on arbitrarily-sized	media but only
       within certain limits which are also known to the driver.   Unlike  the
       sheet  size  the	 page orientation is irrelevant	for deciding whether a
       particular page size is supported or not.  The driver will adapt	itself
       as  required by the PostScript language and rotate the output if	neces-
       sary.  (I know of only one other	ghostscript driver capable of this.)

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

       The  subdevice  unspecold accepts all sizes supported by	the HP DeskJet
       560C, unspec supports all discrete  sizes  known	 to  the  HP  DeskJets
       850C/855C/870C/890C  and	treats in addition every other size request as
       a custom	page size without imposing any limits.	If using any of	 these
       two  subdevices	you  should  change the	list of	supported sizes	to fit
       your printer's capabilities; see	the CONFIGURATION  section  below  for

       In  order for a document	to be printed correctly	a sheet	of appropriate
       size must be provided and the driver must  know	what  its  orientation
       with respect to the printing mechanism is.  The latter is usually spec-
       ified by	reference to the feeding direction as "short  edge  first"  or
       "long  edge  first".   Don't  confuse this kind of orientation with the
       portrait/landscape orientation: the former ("sheet orientation")	refers
       to  the orientation of the sheet	with respect to	the feeding direction,
       the latter ("page orientation") describes the orientation of the	 sheet
       with respect to the page	contents (default user space).	These orienta-
       tions are  logically  independent:  people  inserting  paper  into  the
       printer	need  to know about the	first, people composing	documents only
       care about the latter.

       Because pcl3 has	no information about the actual	dimension or  orienta-
       tion  of	 the  medium  in the input tray, you must ensure yourself that
       this is appropriate.  By	default, the driver assumes the	 dimension  to
       be  that	requested via the page size, but you can override this assump-
       tion with an InputAttributes definition (see the	Media Sources and Des-
       tinations subsection in the CONFIGURATION section below).

       There  is  no  command  in PCL 3+ to tell the printer about the sheet's
       orientation in the input	tray, therefore	it cannot be  chosen  and  the
       manufacturer must prescribe it.	I am not aware of any precise and com-
       plete statement from Hewlett-Packard about what is required in this re-
       spect, hence you	should check your printer's manual whether the assump-
       tions made by pcl3 are correct or not: the driver  assumes  that	 media
       are  always fed short edge first	except when using the subdevices hpdj,
       hpdjplus, hpdj400, hpdj500 or hpdj500c for printing on  envelope	 sizes
       (US  no.	 10  and ISO DL).  In these cases you should insert the	medium
       long edge first.	 If you	find that pcl3's default behaviour  is	incor-
       rect,  you  can override	it with	the option LeadingEdge or a media con-
       figuration file (see the	CONFIGURATION section below).

   Print Quality and Media Properties
       With the	introduction of	the DeskJet 540, HP added two new PCL commands
       to  the language: "Print	Quality" and "Media Type".  For	older DeskJets
       (groups 1 and 2), similar effects can be	achieved  by  specifying  some
       technical aspects of the	printing process in detail.

       You  can	use the	PrintQuality and Medium	options	to adapt the driver to
       the desired output quality and those properties of the medium  it  must
       know  about,  independent of which kind of subdevice you	select.	 If it
       corresponds to a	printer	understanding the  new	commands,  the	option
       values  are  passed  through to the printer, otherwise these specifica-
       tions are mapped	to the older Depletion,	Shingling, and Raster Graphics
       Quality commands	based on recommendations from HP.  If you are not sat-
       isfied with the result in the latter case, use the  options  Depletion,
       Shingling and RasterGraphicsQuality to explicitly set these values.

   Diagnostic Messages
       Error  messages	issued	by  this  driver start with "? component:" and
       warnings	with "?-W component:".	The component can be  eprn,  pcl3,  or
       pclgen,	corresponding  to the driver's three internal layers: the eprn
       device extends ghostscript without knowing PCL, pclgen is a module gen-
       erating	PCL without being aware	of ghostscript,	and pcl3 is the	driver
       proper connecting the other two layers.

       All these messages are written on the standard error stream.

       When specifying options for gs you should keep in  mind	that  case  is
       significant,  that some options must be passed as strings (-s) and oth-
       ers as general tokens (-d), and that gs effectively ignores  every  op-
       tion  it	 does  not  recognize.	 Hence some care in spelling parameter
       names is	necessary.

       If you are confused by the large	number of options, don't worry.	  Just
       ignore  those you don't understand and concentrate first	on the follow-
       ing ones, given here in the order of their importance: -sDEVICE,	-sSub-
       device,	-sColourModel,	-r,  -sPrintQuality, and -sMedium.  You	should
       also check whether there	is an entry in the  reports.txt	 file  in  the
       pcl3 distribution listing working option	combinations for your printer.

   Standard Options
       When calling gs with the	pcl3 driver you	can specify any	option defined
       for ghostscript's prn (printer) device although	some  have  particular
       meanings	or restrictions.  This includes	all device-independent options
       described in gs(1).  You	should also look into  ghostscript's  extended
       documentation  (file Use.htm (link to URL Use.htm)  and the section De-
       vice parameters (link to	URL  Language.htm#Device_parameters)  in  Lan-

		 This  specification  selects the pcl3 driver, but this	is not
		 the only way to select	it with	this option.  See the descrip-
		 tion of the Subdevice option below for	other possibilities.

       -dDuplex[=boolean] or -dDuplex=null
		 This  parameter  requests  duplex  printing and can be	set to
		 true only for unspec and unspecold, and when the  DuplexCapa-
		 bility	value is not none.  The	default	is null	which for this
		 driver	means that the printer's default setting will be used.

		 If your printer does not  support  duplex  printing  you  can
		 achieve the same effect manually by printing the odd and even
		 pages separately (use a command  like	psselect(1)  from  the
		 psutils  package  for extracting these	parts) and reinserting
		 the paper in between.

       -r resolution
		 This option specifies the resolution in pixels	per inch (ppi;
		 sometimes also	called dots per	inch, dpi).  The driver	checks
		 whether the subdevice selected	accepts	the  given  resolution
		 unless	 the  subdevice	 is  unspecold or unspec.  Resolutions
		 supported by at least some of the other subdevices  for  some
		 of  the  colour models	are 75,	100, 150, 300, 600x300 and 600
		 ppi.  Consult the PPD files in	the pcl3 distribution  if  you
		 want to know the details.  The	default	resolution for pcl3 is
		 300 ppi.

		 At least the highest possible value should be listed in  your
		 printer's manual, but some care is necessary in the interpre-
		 tation: the value given to pcl3 must  be  a  resolution  sup-
		 ported	by the printer's hardware for all the colorants	in the
		 process colour	model simultaneously  and  when	 operating  in
		 raster	 graphics  mode.  You should also keep in mind that if
		 your printer has two cartridges they might support  different
		 sets  of  resolutions,	 i.e., which resolution	you can	choose
		 might depend on the colour model.  It is also	possible  that
		 the  print  quality has to be considered as well.  If you are
		 in doubt and have access to  a	 manufacturer-endorsed	driver
		 for your printer, use pcl3opts	to find	out about the settings
		 used by that driver.

		 At least some of the series-500 DeskJets claim	 to  permit  a
		 resolution  of	600 x 300 ppi.	However, 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 restriction.	In ad-
		 dition, it is possible	that the higher	resolution  is	anyway
		 only  supported  for  the printer's builtin fonts and not for
		 general raster	data.

		 Concerning the	DeskJet	870C, my impression is	that  although
		 some  HP  documents and drivers use expressions like "600x300
		 dpi C-REt color" for this printer, the	model does not	really
		 support  a  resolution	 of 600	x 300 ppi.  First, it does not
		 accept	pcl3's output with this	resolution, and	second,	if one
		 inspects  the	best  output  of  HP's Windows driver for this
		 printer with pcl3opts,	one finds that the file	uses a	"mixed
		 resolution",  i.e.,  600  ppi	for black and 300 ppi for CMY.
		 This is not supported by pcl3.

   Pcl3-Specific Options
       -dBlackLevels=levels and	-dCMYLevels=levels
		 These options set the number of intensity  levels  per	 pixel
		 and colorant to use when printing with	black or CMY inks, re-
		 spectively, and must be consistent  with  the	colour	model.
		 They  permit  access  to  the printer's Colour	Resolution En-
		 hancement technology (C-REt) feature.	The defaults are 0  or
		 2,  depending	on  the	colour model chosen.  Other values are
		 only accepted for the subdevices hpdj8nnc, hpdj1120c and  un-
		 spec, and when	not using the colour model RGB.

		 The  subdevice	unspec accepts any non-negative	number of lev-
		 els  except  1	 up  to	 256.	The  subdevices	 hpdj8nnc  and
		 hpdj1120c  accept the levels 0, 2, 3 and 4 with the following
		 restrictions if any of	the levels is larger than 2 (these re-
		 strictions have been determined experimentally	with a DeskJet
		 850C and are not based	on HP documentation):

		    o  You can't use this feature with draft quality.

		    o  You can't use a colour model of CMY.

		    o  You must	use a resolution of 300	ppi.

		    o  You must	use 4 levels for black.

		 When using the	subdevice unspec you should expect the printer
		 to similarly limit the	possibilities.	In particular you must
		 expect	the permitted number of	levels	to  depend  on	colour
		 model,	resolution and print quality.  So far I	have not heard
		 of a PCL-3+ printer supporting	more than four intensity  lev-
		 els per colorant.

       -sColorModel=model or -sColourModel=model
		 This selects the colour model to be used by the driver: Gray,
		 RGB, CMY, CMY+K or CMYK.  The default is Gray.	 Which	colour
		 models	are accepted depends on	the subdevice, see Colour Mod-
		 els in	the section DESCRIPTION	above.

		 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 RGB, effectively the  same  hap-
		 pens  as  for	CMY.  For all other situations you must	ensure
		 yourself that colour model and	intensity levels  are  consis-
		 tent  or  pcl3	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 ProcessColorModel
		 will not be correct for a  colour  model  of  CMY  or	CMY+K.
		 (Ghostscript  returns the native colour space in this parame-
		 ter, not the process colour model.)

		 PCL interpreters understand several compression  methods  for
		 raster	graphics data in order to speed	up host-printer	commu-
		 nication.  The	possible choices are:

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

		 The default method is 9 except	for the	subdevices hpdj, hpdj-
		 plus, and hpdj500 where it is 3 (these	printers do  not  sup-
		 port  method 9),  and for the subdevices unspec and unspecold
		 where it is 2 (this seems to give  the	 best  combination  of
		 portability  and  compression).  Requesting method 3 actually
		 leads to a combination	of methods 2 and 3.   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 absolute val-
		 ues change, the relative  order  of  efficiency  between  the
		 methods is usually the	order of increasing method.  In	short:
		 use method 9 if it is supported.

		 This parameter, if set	to true, will force the	printer	to  be
		 reconfigured  for  every page.	 The option is superfluous for
		 printers which	are truly PCL-3-conforming.

		 Use this parameter if you discover that you can print single-
		 page documents	without	problems but that the printer does not
		 accept	multi-page files.  At present, the only	printer	I know
		 of  for  which	 such a	reconfiguration	is needed is the Xerox
		 DocuPrint M750.

		 You will usually specify this parameter when  using  pcl3  as
		 the  final  component in a CUPS (Common UNIX Printing System)
		 driver.  It will lead to appropriate page accounting messages
		 on standard error.  The default for this parameter is false.

		 If  you have set this parameter to true you can't set it back
		 to false.  The	driver will generate a warning if this is  at-

		 When  using pcl3 within CUPS you will normally	set both, CUP-
		 SAccounting and CUPSMessages.	 There	exist,	however,  CUPS
		 configurations	 where page accounting messages	should be gen-
		 erated	by a command further down the print pipeline than pcl3
		 (e.g.,	 by a CUPS backend capable of processing PJL Page Sta-
		 tus messages and driving a printer  which  sends  them).   In
		 these cases you should	not specify -dCUPSAccounting.

		 Specify  this	parameter  when	using pcl3 as a	component in a
		 CUPS (Common UNIX Printing System) driver.   It  will	modify
		 the  format  of  error	 messages  and warnings	as expected by
		 CUPS.	The default for	this parameter is false.

		 This option is	only available for old DeskJets	(including un-
		 specold)  and when printing in	colour.	 The integer depletion
		 controls an algorithm for removing certain  pixels  from  the
		 image;	 this  leads  to less ink being	applied	to the medium.
		 The possible values for depletion are:

		 1   No	depletion
		 2   25%
		 3   50%
		 4   25% with gamma correction
		 5   50% with gamma correction

		 The default value is derived from  Medium  and	 PrintQuality.
		 The  values  4	 and 5 are not understood by the DeskJet 500C,
		 but even for the other	printers these values are  not	useful
		 because PostScript permits finer control for gamma correction
		 through transfer functions (see the subsection	Transfer Func-
		 tions in the next section).

		 With  the  exception of the DeskJets 500 and 500C, series-500
		 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
		 post-series-500  DeskJets  although  it is still supported by
		 some of them.

		 Permissible values for	delay are null	and  integers  in  the
		 range 0 to 1200, where	null instructs pcl3 not	to send	a cor-
		 responding command, 0 establishes default values for the cur-
		 rent  print  quality, and all other values explicitly request
		 the duration in seconds.  The default is null.

		 Looking at the	final result (sheet printed),  there  are  two
		 kinds	of duplex printing identified by the two possible val-
		 ues for the option Tumble.  Not all printers capable  of  du-
		 plex  printing,  however, provide the hardware	support	neces-
		 sary for both,	hence the driver must be told what the printer
		 offers	 in  order  to	be  able to compensate for the missing
		 functionality.	 The parameter capability can be  any  of  the

		 none		       no duplex capability
		 sameLeadingEdge       second  pass  of	sheet oc-
				       curs with the same leading

		 oppositeLeadingEdge   second  pass  of	sheet oc-
				       curs  with  the	 opposite
				       leading edge
		 both		       second  pass  of	sheet can
				       occur with either edge

		 This option can only be specified for unspecold  and  unspec.
		 The default value is none.

		 The  correct  setting	for  the  HP DeskJet 970C is opposite-
		 LeadingEdge, but the printer permits  access  to  its	duplex
		 functionality	only  if  you  specify	in  addition -sPJLLan-
		 guage=PCL3GUI -dOnlyCRD.  (Many thanks	to Dawei W.  Dong  for
		 an extensive series of	experiments.)

		 If  a printer does not	offer hardware support for both	orien-
		 tations, the document to be printed must execute showpage af-
		 ter  a	 possible page-level restore and not before, otherwise
		 the driver will not be	able to	 compensate  for  the  missing
		 functionality	and  only  one	of  the	two Tumble values will
		 work.	All DSC-3.0-conforming PostScript files	have  the  re-
		 quired	property.

		 Most  printers, including every PCL-3+	printer	I know of, can
		 render	only a small number of intensities per pixel and  col-
		 orant.	 In the	most frequent case, merely two levels are pos-
		 sible.	 As this is usually not	 sufficient,  various  methods
		 have been devised to achieve a	larger palette;	this is	possi-
		 ble at	the expense of spatial resolution.   Because  of  this
		 tradeoff  between  effective  resolution  and	the  number of
		 colours which can be distinguished, the  best	method	for  a
		 given	document  depends  on the contents of the document and
		 the user should therefore be able to select it.

		 The pcl3 driver supports the following	methods	for  intensity

		 printer	   use	the printer's capabilities di-
		 halftones	   use ghostscript's halftoning	imple-
		 Floyd-Steinberg   use Floyd-Steinberg error diffusion

		 The  default method is	halftones.  The	methods	differ only in
		 their treatment of intensities	which  cannot  be  represented
		 directly by the printer.  If your document contains for exam-
		 ple only black	text, they all produce the same	result,	albeit
		 at different speeds.

		 With printer, pcl3 will cause everything to be	painted	at the
		 full hardware resolution but will have	to map all colours  to
		 the nearest levels the	printer	can represent directly.	 For a
		 CMY or	CMYK printer with two intensity	levels,	 this  results
		 in  just 8 useful colours per pixel.  This value is therefore
		 usually only sensible for documents with a  small  number  of
		 widely	 different saturated colours where accurate colour re-
		 production is of minor	importance but achieving  the  highest
		 possible  resolution is essential.  Another possible applica-
		 tion is the case of PostScript	input which has	 already  been
		 adapted  to  the printer's resolution and available intensity

		 With halftones, ghostscript will use what looks like standard
		 PostScript  halftoning	 algorithms.   For  details, consult a
		 PostScript manual.  However,  you  should  know  that	ghost-
		 script's current halftoning implementation has	some problems:

		    o  The  algorithm  cannot handle different non-zero	values
		       for BlackLevels and CMYLevels.  In  this	 situation  gs
		       will  in	general	assume that the	number of black	levels
		       available is equal to that for CMY  levels.   Depending
		       on which	of the numbers is smaller, there will then ei-
		       ther be unused black levels or some will	be  used  more
		       than once.

		    o  When you	are using values larger	than 2 for BlackLevels
		       or CMYLevels, ghostscript does not discover  by	itself
		       that  it	 could	now  achieve the same number of	shades
		       with smaller halftone cells.

		    o  Most of the ways	of increasing the halftone screen fre-
		       quency  seem to fail.  I	have been successful only with
		       the somewhat pedestrian approach	of using threshold ar-
		       rays, and even that worked only for some	cases.

		    o  For  particular	CMYK  values and with ghostscript ver-
		       sion 6 or higher, the colour becomes drastically	wrong.
		       One   example  is  CMYK	=  (0.99998472,	 0.002549,  0,
		       0.00367827); this should	be almost a pure cyan  but  is
		       instead	displayed as a sort of pink.  If one subtracts
		       one unit	in the last position for any of	 the  non-zero
		       components, the result becomes acceptable.  The problem
		       has not been observed with ghostscript 5.50.

		    o  For ghostscript versions	up to and including  5.50,  if
		       you  are	 using	the  colour model CMYK and more	than 2
		       black levels you	should not set merely a	 single	 half-
		       tone  screen  (setscreen, a type-1 or a type-3 halftone
		       dictionary) 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	compo-
		       nents, gs uses a	slower but more	accurate algorithm in-
		       stead  which  does not lead to the wrong	behaviour.  It
		       is not necessary	for the	 halftone  information	to  be
		       different  for  different  components  to achieve this.
		       Note  that  ghostscript	installs   separate   halftone
		       screens	for  CMYK devices by default if	the resolution
		       is at least 150 ppi.

		 Whenever you modify the halftone screens you should therefore
		 use  a	test file like in the pcl3 distribution
		 to check whether you obtain the desired result.  In  particu-
		 lar,  you should count	the number of intensities you can dis-
		 tinguish for a	single colorant: if it is  obviously  not  one
		 plus the number of pixels in the halftone cell	times one less
		 than the number of hardware intensity levels,	something  has
		 gone  wrong.  This is,	for example, the case if you specified
		 4 black levels	and a 2x2 halftone cell, and you then can dis-
		 tinguish more than 1 +	4x3 = 13 intensity levels.  You	should
		 also watch for	non-monotonic jumps in	intensity  and	incom-
		 pletely filled	shapes.

		 The  value Floyd-Steinberg selects Floyd-Steinberg error dif-
		 fusion	as the method for rendering intensities.  Use this  in
		 particular  for printing photographs and other	documents with
		 a large number	of colours or small irregular shapes.  Regret-
		 tably,	 pcl3's	 speed is much slower with this	method than in
		 the other cases, hence	this value should only be used when it
		 is  really  needed  (e.g.,  when  you	run into one of	ghost-
		 script's halftoning problems) or when the  delay  is  accept-

		 If you	are using ghostscript 5.50 and the page	to be rendered
		 needs a lot of	memory (this applies in	particular  to	Floyd-
		 Steinberg  in	colour)	 a  core dump may result under certain
		 circumstances.	 You can get around  this  by  increasing  the
		 MaxBitmap  parameter  or  by switching	to a newer ghostscript

		 This option can be used to specify which edge	of  the	 sheet
		 will  enter the printer first.	 The permitted values identify
		 this edge by reference	to the	orientation  of	 default  user
		 space	on  the	sheet when printing with default settings (ex-
		 cept for LeadingEdge) and a page size having width <=	height
		 ("canonical page in portrait orientation"):

		 null	No request for media orientation
		    0	Short edge; top	of canonical page
		    1	Long  edge; right side of canoni-
			cal page
		    2	Short edge; bottom  of	canonical
		    3	Long edge; left	side of	canonical

		 As far	as I know, given a particular  PCL-3+  printer	and  a
		 particular  media  size, you cannot choose between short edge
		 first (0 or 2)	and long edge first (1 or 3): this orientation
		 is prescribed by the manufacturer and should be documented in
		 your printer's	manual.	 If in doubt,  use  short  edge	 first
		 when inserting	the medium.

		 The  default  value for edge is null.	This leads either to 0
		 or to 3, depending on whether the subdevice normally  expects
		 media	of  this  size to be fed short edge first or long edge
		 first.	 See the subsection Media Sizes	 and  Orientations  in
		 the DESCRIPTION section above for details.

		 If you	find that you can't set	this parameter from PostScript
		 but you can set it from the command line, ghostscript's  set-
		 pagedevice definition probably	does not pass the parameter to
		 drivers.  Read	the gs-mods.txt	file in	the pcl3  distribution
		 on how	to fix this.

		 It  is	 possible  to request a	DeskJet	printer	to wait	before
		 each page of  a  document  until  the	Load/Eject  button  is
		 pressed  on  the  printer.   This  is intended	for situations
		 where some special medium is used or the medium has to	be in-
		 serted	 into  an input	slot holding only one sheet at a time.
		 The default setting for this option is	false.

		 In PCL, manual	feed is	established by requesting a particular
		 media	source	(2), hence you should expect that setting this
		 parameter will	interfere with the input  tray	selection  via
		 InputAttributes  (see the Media Sources and Destinations sub-
		 section in the	CONFIGURATION section below).

		 This option must specify an existing file containing  a  list
		 of  supported media sizes, sheet orientations and correspond-
		 ing margin descriptions for  the  printer.   This  will  take
		 precedence  over  the	builtin	subdevice-specific lists.  The
		 format	of the file is described in the	CONFIGURATION  section
		 below.	 This option is	primarily intended to be used with the
		 subdevices unspecold and unspec.

		 The default is	not to use a media configuration file but  the
		 builtin lists.	 However, a media file path can	also be	speci-
		 fied at compile time overriding the default behaviour for un-
		 spec  only.  Using the	MediaConfigurationFile option in addi-
		 tion will take	precedence over	 the  compiled-in  media  file

		 This  option sets the standard	PostScript page	device parame-
		 ter MediaPosition to the specified value.  The	integer	 posi-
		 tion identifies an input tray for feeding media from and must
		 refer to an existing entry in the InputAttributes  dictionary
		 (see  the  Media  Sources  and	Destinations subsection	in the
		 CONFIGURATION section below) in order to  take	 effect.   The
		 media	selection process will use this	entry in preference to
		 others	provided it matches the	media request.	The default is
		 not  to request a particular tray by position but to look for
		 a best	match based on other properties.  As ghostscript's de-
		 fault configuration defines only one entry in InputAttributes
		 this option is	ineffective unless you modify InputAttributes.

		 With current ghostscript versions you can't use this  parame-
		 ter  to  select a negative position.  The driver will issue a
		 warning if you	attempt	it.  If	 the  entry  is	 actually  se-
		 lected,  a  rangecheck	 error	from  ghostscript will follow.
		 This restriction applies only to this device  parameter,  not
		 to  permissible  values  for  position	 numbers  in  InputAt-
		 tributes: if you want to use a	negative position, you can  do
		 so  by	 making	 sure that it is the only matching entry or by
		 selecting it via Priority.

		 This option selects the type of medium	you wish to  print  on
		 as  far  as the printer needs to know about it.  The possible
		 choices are:

		 0   plain paper
		 1   bond paper
		 2   HP	Premium	paper
		 3   glossy paper
		 4   transparency film
		 5   quick dry glossy
		 6   quick dry transparency

		 The default is	plain paper.  For medium, you can specify  the
		 full  strings	(these	are the	standard values), the (in some
		 cases)	one-word  strings  resulting  from  dropping  "paper",
		 "film", and "HP", or an integer.  Out-of-range	numerical val-
		 ues generate a	warning	but are	passed through to the  printer
		 if  you are using a group-3 subdevice.	 If you	don't, the ef-
		 fect is the same as specifying	plain paper.  The values 5 and
		 6 are unknown to most DeskJets; the only official exception I
		 know of is the	 HP  2000C  printer.   Your  printer's	manual
		 should	tell you which kinds of	medium are supported.

		 This  parameter  influences the PCL code generated and	should
		 only be specified for group-3 DeskJets.  The default value is
		 false	and leads to the new PCL command Configure Raster Data
		 being used only when it is necessary.	Specifying true	 leads
		 to Configure Raster Data being	used even in those cases where
		 older commands	would be sufficient.

		 There are indications that printers with  a  PCL  dialect  of
		 "PCL  Level  3	enhanced" need a value of true for this	option
		 to enable some	of their functionality.

		 The pathname must specify either a non-existent file in a di-
		 rectory  with write permission	or a writable file with	a sin-
		 gle line containing a non-negative  integer.	In  the	 first
		 case,	pcl3  will  create  the	 file and insert the number of
		 pages printed,	in the second case the number will  be	incre-
		 mented	 by  that amount.  Parallel invocations	of gs are per-
		 mitted	to use the same	file.  pcl3 will also make the initial
		 page count available in its page device dictionary.

		 This  option  is mainly intended for spooler backends calling
		 pcl3.	It can be used to keep track of	the  total  number  of
		 pages	printed	 and also for per-job accounting.  I recommend
		 using this option for the first purpose and to	make a note of
		 the  values  in the resulting files whenever you insert a new
		 ink cartridge.	 This will enable you to get an	indication  of
		 how  much  a  printed	page costs, and	hence why it is	a good
		 idea to use draft  quality  whenever  possible	 and  why  you
		 should	have bought a laser printer.

		 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.

		 pcl3 is distributed with example files	if-pcl3	and  cups-pcl3
		 of Berkeley and CUPS spooler backends using this option.

       -sPCLInit1=string and -sPCLInit2=string
		 These	options	 can be	used to	insert additional PCL commands
		 into pcl3's output.  Strings given to PCLInit1	will  be  sent
		 immediately  after  the  initial  Printer  Reset command, the
		 value of PCLInit2 will	be emitted shortly before  the	raster
		 data of the first page.  The default is not to	send any addi-
		 tional	commands.

		 Don't use any of these	options	unless you understand  PCL  or
		 someone  who does tells you which value to choose under which

		 Because not every possible string value can  be  passed  from
		 the  command line, these parameters are best set from a Post-
		 Script	file.

		 This option can be used to surround the generated  file  with
		 Printer Job Language (PJL) commands declaring it to be	a sin-
		 gle print job called jobname.	If you omit jobname, you  cre-
		 ate  an unnamed job.  The string jobname may not contain dou-
		 ble quotes or control characters  except  HT  (the  forbidden
		 byte codes are	0 to 8,	10 to 31, and 34).

		 Use  this option if your printer understands PJL and you dis-
		 cover either that settings for	one job	influence the  follow-
		 ing job or that the printer does not recognize	the end	of the
		 job (lights remain flashing or	a control panel	still displays
		 a  processing	message).   If you send	the generated PCL file
		 through  a  PJL  filter,  in  particular  one	querying   the
		 printer's state, omit this option and use the filter for this
		 purpose instead.

		 If a printer supports several command languages and PCL 3+ is
		 not the default, the printer must be told to switch to	PCL 3+
		 at the	beginning of the print job.  Hewlett-Packard's	print-
		 ers  use  a  Printer Job Language (PJL) command for this pur-
		 pose.	Specifying this	option will switch the printer to lan-
		 guage	for the	duration of the	job and	back to	the default at
		 the end.

		 This option is	not usually necessary except  that  there  are
		 indications  that printers with a PCL dialect of "PCL Level 3
		 enhanced" need	-sPJLLanguage=PCL3GUI to enable	some of	 their

		 You  should  never  use the option unless you have a reliable
		 source	for the	values of language accepted by	your  printer,
		 for  example the output from pcl3opts for a file generated by
		 an official driver for	the printer  in	 question.   Values  I
		 have seen so far are PCLSLEEK and PCL3GUI.

		 If you	send the generated PCL file through a PJL filter, omit
		 this option and use the filter	for this purpose instead.

		 There are three print quality settings:

		 -1   draft or econo
		  0   normal
		  1   presentation or best

		 The default is	normal.	 You may specify the strings or	an in-
		 teger.	 Out-of-range numerical	values will generate a warning
		 but are passed	through	to the printer if you have selected  a
		 group-3 subdevice.  If	you haven't, the effect	is the same as
		 specifying normal.

		 This option is	only available for old DeskJets	(including un-
		 specold)  and	controls a trade-off between quality and print
		 speed.	 The possible values for quality are:

		 0   Use current control panel setting
		 1   Draft
		 2   High

		 Specifying this option	overrides the  default	value  derived
		 from Medium and PrintQuality.

		 When  printing	 with  four inks, a PCL-3+ printer expects the
		 colour	information for	a row of pixels	in  the	 order	black,
		 cyan, magenta,	and finally yellow (KCMY).

		 There	exists	at  least  one	printer	(Olivetti JP792) which
		 claims	to accept PCL 3+ but expects the colour	planes to  ar-
		 rive  in  the	order  CMYK.   If you have a printer with this
		 property, use this option.  The default value is false.

		 Most HP drivers for newer DeskJet printers generate PCL files
		 starting  with	a sequence of 600 NUL characters, at least one
		 uses even 9600	NULs.  I have seen no  documentation  of  this
		 feature  but I	assume that in PCL the NUL character demands a
		 null operation, i.e., does nothing.  Just in case such	a  NUL
		 sequence  is  useful under certain circumstances, this	option
		 can be	used to	request	it.  (It has been suggested that  this
		 is  needed  to	 get the printer to accept new PCL commands if
		 the previous print job	was aborted in the middle  of  a  com-
		 mand.)	  The value number specifies the number	of NUL charac-
		 ters to send and must not be negative.	 The default is	 zero.
		 Note  that  initial NULs might	confuse	spooler	backends which
		 try to	determine the file type	from the first	few  bytes  of
		 the file contents.

		 There	is no point in using this option if some other command
		 in your print pipeline	will add Printer  Job  Language	 (PJL)
		 commands to the pcl3-generated	file.

		 This option is	only available for group-2 DeskJets (including
		 unspecold) and	controls the number of passes the  print  head
		 makes	over  the medium.  A higher number permits more	neigh-
		 bouring pixels	to be printed in separate passes, thereby  re-
		 ducing	 the  likelihood  of  the  ink spreading into the next
		 pixel.	 The possible values for shingling are:

		 0   No	shingling
		 1   2 passes (50% each	pass)
		 2   4 passes (25% each	pass)

		 Specifying this option	overrides the  default	value  derived
		 from Medium and PrintQuality.

		 This option identifies	the printer model for which the	gener-
		 ated file  is	intended.   The	 following  names  (mostly  of
		 Hewlett-Packard DeskJet printers) are accepted	for subdevice:

			hpdj,	hpdjplus,   hpdjportable,   hpdj310,  hpdj320,
			hpdj340, hpdj400, hpdj500, hpdj500c, hpdj510, hpdj520,
			hpdj540,   hpdj550c,   hpdj560c,  unspecold,  hpdj600,
			hpdj660c,  hpdj670c,  hpdj680c,	 hpdj690c,   hpdj850c,
			hpdj855c, hpdj870c, hpdj890c, hpdj1120c, unspec.

		 The correspondence with the real printer name is, I hope, ob-
		 vious.	 Note that hpdj	does not select	the hpdj driver	 (this
		 driver's  predecessor)	but configures the pcl3	driver for the
		 "classical" HP	DeskJet.

		 With the exception of hpdj, unspec and	unspecold, your	gs bi-
		 nary  might support the subdevice names also as device	names,
		 i.e., instead of specifying -sDEVICE=pcl3  -sSubdevice=subde-
		 vice  you  might  be able to write -sDEVICE=subdevice.	 Check
		 ghostscript's list of available devices to find  out  whether
		 this is the case (gs -h).

		 The  choice  of  subdevice primarily determines which resolu-
		 tions,	colour models, intensity levels	and  media  sizes  the
		 driver	will accept, where the output will appear on the page,
		 and to	some extent what PCL code the  driver  will  generate.
		 Several of the	subdevices are treated identically.

		 The  default  subdevice  is  unspec.	It is intended for new
		 PCL-3+	printers not explicitly	supported by this driver.  For
		 unspec,  all subdevice-specific checks	(e.g., supported reso-
		 lutions) 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 and should use  the
		 MediaConfigurationFile	 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 of the level
		 of a DeskJet 540 supporting the PCL commands Media  Type  and
		 Print	Quality.  If you specify unequal horizontal and	verti-
		 cal resolutions or more than two levels of intensity per col-
		 orant	and pixel, the printer must in addition	understand the
		 Configure Raster Data command.

		 The subdevice unspecold is similar but	behaves	like a DeskJet
		 560C.	 It supports all colour	models and all uniform resolu-
		 tions (the horizontal resolution is  equal  to	 the  vertical

		 If you	choose to use unspec or	unspecold it is	your responsi-
		 bility	to ensure that pcl3 is only called with	parameter val-
		 ues  the  printer  can	handle.	 This applies in particular to
		 the resolution	and the	intensity levels.

		 If you	set this parameter from	a PostScript document you must
		 know  that doing this re-initializes most of the pcl3 parame-
		 ters to their default values.	If you set several page	device
		 parameters  in	 a single setpagedevice	call the Subdevice op-
		 tion will be treated first.

		 When duplex printing is requested (-dDuplex), this  parameter
		 specifies  whether  the  y  axes of PostScript's default user
		 space on the two sides	of the sheet (assumed to use the  same
		 page  size) point to the same edge or to opposite edges.  The
		 default value false indicates the same	edge  and  is  usually
		 suitable  for	binding	on the left while true indicates oppo-
		 site edges and	should be used for binding at the top.

		 You should note that the interpretation of Tumble  refers  to
		 default  user	space: if a PostScript program has rotated the
		 user space coordinate	system	the  association  between  the
		 page's	apparent "up" direction	and the	binding	edge will usu-
		 ally not be the one desired.  You should watch	 for  this  in
		 particular when creating output in landscape orientation from
		 an application	still generating PostScript Level 1 code.   If
		 a  ghostscript	screen driver like x11 displays	the pages with
		 the right side	up you should have  nothing  to	 worry	about,
		 even in the case of landscape orientation.  (You must call gs
		 directly for this test, not via ghostview.)  If the  orienta-
		 tion  between	the  two sides turns out to be wrong, you will
		 have to print again with the opposite value for  Tumble.   If
		 that does not help and	you have a printer supporting only one
		 of the	two possible duplex orientations, check	 the  relative
		 order	of  restore  and  showpage in the document you printed
		 (see the DuplexCapability option above).

		 This option should only be given when printing	on A6 and with
		 a  printer  like the HP DeskJet 1120C which distinguishes be-
		 tween A6 sheets and A6	postcards.  The	option can be used  to
		 specifically  request	one  of	the alternatives.  The default
		 value is null and means that sheets are  preferred  to	 post-
		 cards,	but either is acceptable if supported.	The other per-
		 mitted	values are true	and false.

		 This option applies to	all page sizes set  while  ghostscript
		 executes  and	this includes the default size set at startup.
		 If you	wish to	use -dUseCard=true you will therefore  usually
		 have  to  specify the PAPERSIZE option	in the call, otherwise
		 an error will occur because there is no postcard variant  for
		 the usual default sizes (ISO A4 and US	Letter).

   Option Combinations for Hardware Parameters
       Not  all	 combinations of colour	model, resolution, number of intensity
       levels, print quality and media type are	accepted or make  sense.   Un-
       fortunately,  Hewlett-Packard  does not publicly	release	sufficient in-
       formation to find the best possible combinations.  A good way  to  find
       reasonable  settings  is	to use pcl3opts	on files generated by an offi-
       cial driver for the printer.   You  should  also	 check	the  file  re-
       ports.txt in the	pcl3 distribution.  In addition, I'll provide some re-
       marks here.

       As a general rule, it is	unprofitable to	use a  finer  resolution  than
       300  ppi	 or more than 2	intensity levels for draft quality.  A coarser
       resolution in particular	can reduce the time  needed  to	 generate  and
       transmit	 the  file  to	the printer.  Combined with draft quality this
       leads to	what HP	calls an "EconoFast" mode.

       As an exception,	here are recommendations based on official HP documen-
       tation  for  the	DeskJet	1120C.	The table lists	the resolution and the
       number of black or black	and CMY	levels if not 2.

	      Quality	     Gray		 CMYK
	      draft	     300 ppi		 300 ppi
	      normal	     300 ppi, 4	levels	 300 ppi, (4,3)	levels
	      presentation   600 ppi		 300 ppi, (4,4)	levels

       These seem reasonable values for	the supported series-800  DeskJets  as

   Checking Page Device	Parameters
       As  for all ghostscript drivers,	pcl3's command line options correspond
       to identically-named PostScript page device parameters and are accessi-
       ble  in the usual way.  In particular, it is possible to	read the value
       of a parameter by letting gs execute a command like

	      currentpagedevice	/parameter get ==

       where parameter is the name of the parameter one	would like to inspect,
       for  example  BlackLevels.   This is useful if you are in doubt whether
       the driver has accepted your options.  Of course,  for  printer-visible
       parameters you can also use pcl3opts on the output file.

       The  ghostscript	 distribution  contains	a program which dis-
       plays the page device dictionary	on standard output but	does  not  re-
       solve  nested  dictionaries.   The pcl3 distribution contains a similar
       program which	does not have this limitation.

   Media Configuration File
       A media configuration file (media file for short) can be	used to	 over-
       ride the	builtin	subdevice-specific lists of supported media sizes and,
       for each	size, the sheet	orientation in the input tray and the  margins
       enforced	by the printer.	 This feature is mainly	intended to be used in
       conjunction with	unspec and unspecold: if you have a model not directly
       supported  by this driver, look up the supported	media sizes, the rules
       for inserting media and the corresponding  printable  regions  in  your
       printer's manual	and enter them in a media file.


	      Entering	a media	size in	the file which is not really supported
	      by your printer is not useful: the PCL interpreter  will	simply
	      ignore  the request to set this size, and	printer	and driver may
	      have diverging opinions about what the margins will be.  If  you
	      need  to	print  on  a  medium  of  a size not supported by your
	      printer, choose a	larger and  printer-supported  size  in	 Post-
	      Script  or  via FIXEDMEDIA, shift	the image if necessary,	estab-
	      lish properly-positioned clipping	regions	within the real	 size,
	      and  print.  Or you could	use a suitable page size recovery pol-
	      icy for PostScript's media selection process.  However,  if  you
	      have  a  newer DeskJet supporting	custom page sizes, all this is
	      not necessary.

       Margin specifications are important for two reasons: the	values for the
       left  and  top  margins	determine  how the output is positioned	on the
       page, and sufficiently large values 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 usually  have
       an  inconveniently large	bottom margin (usually 0.4-0.8 inches or 10-20
       mm), one	might be tempted to specify 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

       A  line in the media file can be	blank, a comment line (first non-blank
       character is '#'), or one of the	following:

	      unit   unit
	      size   left bottom  right	top

       A unit line specifies in	which units margin specifications in the  fol-
       lowing lines should be interpreted.  unit can either be in (inch) or mm
       (millimetre) with in being the default.	A unit	specification  remains
       in force	until overridden by a following	unit line.

       The second kind of line states that the model supports a	particular me-
       dia configuration and specifies the hardware margins in force for  that
       case.   The size	word consists of two parts: a keyword denoting the ex-
       tension and an optional suffix.	The following  keywords	 are  accepted
       (entries	 marked	 with  an asterisk (*) are those used by the subdevice
       unspec if no media file is employed; entries with  a  section/paragraph
       sign (<section>)	similarly identify the sizes used by unspecold):

		Index3x5in   US	index card 3 x 5 in
		  EnvChou4   Japanese long envelope #4 (90 x 205
		EnvMonarch   US	Monarch	envelope  (3.875  x  7.5
		 *Postcard   Japanese Hagaki card (100 x 148 mm)
	       *Index4x6in   US	index card 4 x 6 in
	   <section>*Env10   US	no. 10 envelope	(4.125 x 9.5 in)
			A6   ISO/JIS A6	(105 x 148 mm)
		   *A6Card   ISO/JIS A6	postcard (105 x	148 mm)
	   <section>*EnvDL   ISO DL envelope (110 x 220	mm)
		  EnvUS_A2   US	A2 envelope (4.375 x 5.75 in)
		    *EnvC6   ISO C6 envelope (114 x 162	mm)
		  EnvChou3   Japanese  long  envelope  #3 (120 x
			     235 mm)
	       *Index5x8in   US	index card 5 x 8 in
		 Statement   US	Statement (5.5 x 8.5 in)
	    DoublePostcard   double Postcard (148 x 200	mm)
		       *A5   ISO/JIS A5	(148 x 210 mm)
		     EnvC5   ISO C5 envelope (162 x 229	mm)
		     ISOB5   ISO B5 (176 x 250 mm)
		    *JISB5   JIS B5 (182 x 257 mm)
       <section>*Executive   US	Executive (7.25	x 10.5 in)
	      <section>*A4   ISO/JIS A4	(210 x 297 mm)
	  <section>*Letter   US	Letter (8.5 x 11 in)
	   <section>*Legal   US	Legal (8.5 x 14	in)
		  EnvKaku2   Japanese Kaku envelope (240  x  332
		     JISB4   JIS  B4  (257  x  364 mm).	 This is
			     distinct from ISO	B4  (250  x  353
		   Tabloid   US	 Tabloid  (11  x 17 in;	in land-
			     scape   orientation   also	  called
			A3   ISO/JIS A3	(297 x 420 mm)

		  HPSuperB   what HP calls Super B (13 x 19 in)
	   *CustomPageSize   custom page size

       Note the	difference between A6 (sheet) and A6Card (postcard).  I	do not
       know why	Hewlett-Packard	associates this	distinction  with  media  size
       instead	of  media  type.  However, with	the exception of the 1120C all
       DeskJet printers	I know of use only A6Card anyway.

       In looking at your printer's documentation, bear	in mind	that a	driver
       might  support  more  sizes  than the printer accepts; pcl3 needs to be
       given the latter	values.	 If you	are in doubt what your printer	under-
       stands, pcl3opts	can tell you which media size another driver requests.

       Custom  page sizes are not understood by	older printers and may be used
       in a media file only for	the subdevices hpdj540,	hpdj6nn[c],  hpdj8nnc,
       hpdj1120c,  and unspec (group 3).  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.  pcl3 will tell the	printer	 to  expect  a	custom
       page size only if there is no fitting discrete entry.

       Although	 it  is	possible, on those printers which support it, to use a
       media configuration file	containing only	a custom page  size  entry,  I
       advise against it because this size specification is only intended as a
       last resort.  If	you have a custom page size entry in the  media	 file,
       you  should therefore list all discrete sizes supported by your printer
       or at least those which you expect to use.

       The size	keyword	in the size field can be  extended  by	the  following

       Big	 For  pcl3, this suffix	means banner printing.	In these cases
		 the top and bottom margins are	 usually  zero.	  HP  DeskJets
		 supporting  banner printing do	so only	for ISO	A4 and US Let-
		 ter.  Your media file should then  contain  entries  for  the
		 sizes A4, A4Big, Letter, and LetterBig.

		 By  default, pcl3 assumes that	the media listed are fed short
		 edge first.  If you specify this qualifier, the  driver  will
		 assume	 that  you  are	 going to feed media of	this size long
		 edge first.  If, for example, your  printer's	manual	states
		 that  envelopes of size ISO DL	should be fed long edge	first,
		 the corresponding size	field in your media file  should  con-
		 tain the string EnvDL.Transverse, not EnvDL.

		 This  specification  (or  its absence)	can be overridden with
		 the option LeadingEdge	in the call.

       The builtin lists for the unspec	and unspecold devices do  not  contain
       size entries with any of	these suffixes.

       Every  media  file  must	 contain  at  least an entry which fits	ghost-
       script's	default	page size, usually ISO A4 or US	 Letter.   Only	 those
       sizes  which  are listed	will be	accepted by pcl3.  This	is independent
       of a .Transverse	suffix.	 If there are several  entries	in  the	 media
       file with the same size value, only the first is	used.

       The  margins in a size entry should be valid for	monochrome printing in
       raster graphics mode.  If a non-monochrome colour model is selected and
       unless  the  bottom  margin  is exactly zero, it	will be	increased by a
       subdevice-specific amount.  This	increment is zero  for	unspecold  and

       The  orientation	 of  the  margins refers to the	feeding	direction: you
       should imagine holding the sheet	such that the leading edge is  at  the
       top  and	the side to be printed on is towards you.  Be careful with en-
       velopes:	older (pre-1997) HP documentation usually gives	the margins in
       landscape orientation even for those printers where the envelope	has to
       be fed short edge first.	 You can check this by looking for the largest
       margin  value: if it is on the left instead of at the bottom you	almost
       certainly have such a landscape-based specification; rotate the	values
       by  +90	degrees	(quarter-circle	counterclockwise) in these cases.  The
       margins have to be specified as non-negative floating point numbers  in
       inches  or  millimetres	as  announced by the last preceding unit line.
       The floating point format is that of the	"C" locale.

       pcl3 is distributed with	an example of a	media configuration file,  ex-

   PostScript Configuration Files
       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 ac-
       cepts several file names	in the invocation and processes	 them  sequen-
       tially.	 This  is particularly appropriate for those PostScript	opera-
       tors which affect device-specific features and should therefore not ap-
       pear  in	 a  portable  page description and for settings	which would be
       part of the interpreter's persistent state when using a real PostScript

       The  pcl3  distribution	contains  examples  of filters if-pcl3 for the
       Berkeley	spooler	lpr(1) and cups-pcl3 for the Common UNIX Printing Sys-
       tem  cupsd(8).	These filters permit the use of	a print-queue-specific
       configuration file.

   Media Sources and Destinations
       PostScript has a	builtin	mechanism for selecting	media sources and des-
       tinations  based	 on  certain properties	of the document.  This usually
       requires	a system administrator to set the InputAttributes  and	Outpu-
       tAttributes dictionaries	in the device's	page device dictionary accord-
       ing to the current state	of the printer and its intended	use.  For  ex-
       ample,  if  there  are two input	trays, one currently holding paper and
       the other transparencies, the administrator could configure  the	 Inpu-
       tAttributes  dictionary	such that print	jobs requesting	transparencies
       in a certain manner automatically fetch media from the second tray  and
       every job needing a size	not currently available	will terminate with an
       error message.  Unfortunately,  in  order  to  work  as	expected  this
       process usually also requires some additional action on the part	of the
       entity generating the PostScript	code to	be printed.

       If your printer is capable of sensing certain properties	 of  media  in
       the  input  tray	 (e.g.,	media size) or assumes a fixed association be-
       tween media properties and input	trays you must expect this functional-
       ity to interfere	with the process referenced here.

       In  the attributes dictionaries,	each tray is identified	by an integer,
       its position number.  When ghostscript successfully matches  the	 docu-
       ment's  requirements  with trays	the resulting position numbers are ac-
       cessible	to the driver.	The pcl3 driver	uses these numbers (except  0)
       directly	 as  arguments	for the	PCL commands "Media Source" and	"Media
       Destination", respectively.  For	the Media Source values	(input trays),
       I know of the following meanings:

	      -1   banner printing
	       1   default tray; portable CSF
		   (DJ	340);  tray   2	  (HP
	       2   manual feed
	       3   envelope feed
	       4   desktop CSF (DJ 340); tray
		   3 (HP 2500C)

	       5   tray	1 (HP 2500C)
	       7   auto	select (HP 2500C)

       You'll have to experiment with your printer to find  out	 which	values
       are  accepted  and  what	 their interpretation is.  In general, you can
       only expect 1 and 2 to work.  Unrecognized values should	be simply  ig-
       nored  by  the printer leading to the medium being fetched from the de-
       fault tray.  To shorten the search, use pcl3opts	if you can in order to
       find out	which values other drivers generate.  Don't bother testing the
       value 0:	in PCL its effect is to	eject a	 page  and,  as	 this  is  not
       needed,	pcl3  uses  it	to  mean that no particular tray should	be se-

       I do not	know of	any PCL-3+ printer supporting  more  than  one	output
       tray,  hence  the corresponding implementation is based on the specula-
       tion that such a	feature, if made available, would use the same command
       as in PCL 5.  Again, a value of zero is used by pcl3 to mean "don't se-
       lect a particular tray".

       Ghostscript's default configuration defines InputAttributes and	Outpu-
       tAttributes  dictionaries with one entry	each, having position number 0
       in both cases, and maps all requests to these positions.	 As  explained
       above, this configuration will lead to pcl3 not requesting any particu-
       lar input or output tray.  If you wish to modify	this you  should  con-
       sult  a	PostScript manual, for example the sections 6.2.1 and 6.2.4 in
       the PostScript Language Reference.  However, I'll  present  here	 three
       examples	 without explanation.  In all cases, the PostScript code shown
       should be executed before the document to be printed.

       The first example is intended for situations where you always  wish  to
       select a	specific input tray:

		/InputAttributes <<
		  0 null
		  input	<< /PageSize [6	6 524287 524287] >>
	      >> setpagedevice

       Replace	input with the number of the tray you wish to use.  The	second
       example does the	same for the output tray:

		/OutputAttributes <<
		  0 null
		  output << >>
	      >> setpagedevice

       Replace output with the number of the tray you wish to use.

       For the final example assume that you have one input tray, filled  with
       media of	a certain default size,	and you	wish all print jobs requesting
       another size to automatically switch to manual feed so you  can	insert
       these special sheets at leisure.	 In that case, let gs execute the fol-
       lowing PostScript code:

		/InputAttributes <<
		  0 << /PageSize [width	height]	>>
		  2 << /PageSize [6 6 524287 524287] >>
		  /Priority [0 2]
	      >> setpagedevice

       For width and height you	must insert the	actual dimensions of your  de-
       fault  size in units of 1 bp ("big point", 1/72 inch, roughly 0.35 mm);
       the tolerance is	5 bp.  In contrast to a	document's page	size, the ori-
       entation	is irrelevant here.

       If  you drop the	second entry and the Priority line in the last example
       you obtain a configuration where	ghostscript will refuse	to  print  any
       document	 not  requesting  the specified	media size.  If	you retain the
       two lines and you are using the unspecold or unspec devices it  is  ad-
       visable	to  insert  your printer's actual size bounds instead of those
       given above.  This will protect you against printing on some sizes  not
       supported by your printer.

   Banner Printing
       Some printers support printing on continuous forms, also	called banners
       or z-fold media.	 Your printer's	manual should tell you whether this is
       supported and in	particular how to load these media.

       In  order  to print on continuous media with pcl3, configure it as fol-

	  o  Make sure that input position number -1 will be selected (see the
	     subsection	Media Sources And Destinations above).

	  o  In	 the  call  to	gs, select a subdevice supporting the intended
	     "Big" size.  By default, only the subdevices  hpdj680c,  hpdj690c
	     and hpdj1120c support banner printing (A4Big and LetterBig).

       Don't forget to prepare the printer as well.

   Correcting Offsets
       A  media	configuration file is intended to adapt	pcl3 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 output	is not
       properly	positioned on the page even if the margin information is  cor-
       rect  for this model.  PostScript defines two arrays in the page	device
       dictionary for correcting such misadjustments, both containing two num-
       bers  describing	 a desired shift of the	page image with	respect	to de-
       vice space coordinate axes but in different units.  The values  in  the
       `Margins'  array	 are  interpreted  with	respect	to a canonical default
       resolution, the newer `PageOffset' array	is taken to  be	 in  units  of
       1/72  inch  ("big  points", bp).	 For pcl3 the device coordinate	system
       has an x	axis pointing to the right and a  y  axis  pointing  downwards
       when looking at the sheet with the leading edge at the top and the side
       to be printed on	towards	you.  The canonical default resolution is  300

       As  an example, assume your printer shifts its output 1 mm to the right
       and 0.5 mm upwards.  Now	create a file containing either	the PostScript

	      << /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.

       The margin test files distributed with pcl3 can be  used	 to  determine
       the  necessary correction.  You should be aware that you	have to	expect
       fluctuations between individual print jobs, in particular in the	 hori-
       zontal direction.

   Transfer Functions
       DeskJets	usually	produce	prints which are too dark (too much ink	on the
       page), most noticeably when using more than 2 intensity levels per col-
       orant.	In  this case you should perform 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 intensities 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 meaning light
       (additive interpretation), a value of number < 1	will lead  to  lighter
       colours and number > 1 results in darker	colours.

       The  best  value	for number depends on the print	quality, the number of
       intensity levels, the method chosen for intensity rendering,  the  kind
       of  medium  you	print  on,  and	 the  properties of the	document to be

       Note that there is no  common  convention  for  the  interpretation  of
       stand-alone  gamma  values.  When dealing with other software you might
       for example find	that the boundary between light	and dark is at a value
       of 1000	and  that lighter colours are obtained with larger values.  In
       order to	understand what	a "gamma value"	means you therefore  need  the
       complete	 specification of the transfer function	and, if	the value does
       not refer to PostScript,	also information on the	interpretation of  in-
       tensity values.

       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	functions.

       If you are using	-sIntensityRendering=halftones,	less than 32 intensity
       levels per colorant, a resolution below 800 ppi,	and unless you explic-
       itly set	transfer functions, gs	applies	 a  default  gamma  correction
       roughly corresponding to	a value	of 0.8 for number.

   Ghostscript Version
       This manual page	contains statements relying on undocumented properties
       of ghostscript.	These statements are to	my best	knowledge  and	belief
       correct	for  current ghostscript versions but I	do not check all these
       statements for every new	version.

       If you are in doubt about a particular point, please check it yourself.

       Hewlett-Packard does not	publicly provide sufficiently detailed or  ac-
       curate  technical information to	write a	reliable driver	for all	of its
       PCL-3+ printers.	 The amount and	quality	of available information  dif-
       fers between printer models.  As	a consequence, pcl3 cannot provide the
       same level of reliability for all of its	devices.

       In my opinion the best-documented printers are those of the DeskJet-500
       series.	In addition, I have currently access to	a DeskJet 850C which I
       have used for a number of  experiments.	 Support  for  these  printers
       should be considered to be the most reliable.

       The  next  level	 of  reliability belongs to the	remaining printers for
       which subdevices	exist.	In these cases I had at	least access to	 offi-
       cial  HP	documentation on supported media sizes and associated hardware
       margins and in addition for almost all cases some  information  on  the
       supported  PCL  commands, sometimes complemented	by PCL files generated
       by HP's official	drivers	and sent me by users.

       The third level of reliability is associated with  those	 printers  for
       which people have sent success reports but for which I have no official
       information from	HP.

       With decreasing reliability it becomes increasingly probable that there
       is  printer  functionality which	is not accessible through pcl3 or even
       that this driver	generates PCL code not accepted	by the printer.

   Mixed Resolutions
       Some printers are able to print with different  resolutions  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 not supported by	pcl3.

   Photo Cartridges
       From  what I've heard, DeskJet printers with photo cartridges installed
       do not use a CMYK palette but instead one with 6	components.  I have no
       official	 information  on  this interface and even if I had it wouldn't
       help because ghostscript	does not currently support DeviceN as a	native
       colour space.

   Cartridge Alignment
       DeskJet	printers  with more than one ink cartridge present should usu-
       ally be configured for the proper  relative  alignment  of  these  car-
       tridges.	  Apparently,  this  information is stored in not-immediately-
       volatile	memory in the printer together with some  settings  (like  the
       default	media size) which are not relevant for printing	with pcl3.  As
       I do not	have information on how	this is	done, you will need to use one
       of HP's programs	for this purpose.

       On  a Linux system, try installing and running HP's DOS DeskJet control
       panel DJCP in the DOS emulator.	DJCP should be present on one  of  the
       installation media you received with your printer.  One user managed to
       get this	to work	for a DJ 670C with DOSEMU 0.98	under  RedHat  5.2  by

	      $_ports =	"0x378 0x379"

       in dosemu.conf.	I was not successful on	my Debian system.

       The  pcl3 distribution contains a file	which you can print if
       you wish	to check to which extent the cartridges	are aligned.

       There are no known bugs in pcl3 proper, but there do exist restrictions
       or  bugs	 in  gs	 which can lead	to faulty behaviour when printing with
       pcl3.  As far as	I noticed them they are	mentioned in the body of  this
       manual page at the relevant points.

       You  can	 find  an  up-to-date bug list for this	driver via pcl3's home
       page on the Web.

       gs(1), pcl3opts(1)

       A  First	 Guide	to  PostScript	(link	to   URL   http://www.cs.indi-

       Adobe  Systems, PostScript Language Reference (link to URL http://part- .	 Third edition,	1999.

       Copyright (C) 2000, 2001	by Martin Lottermoser,	Greifswaldstrasse  28,
       38124 Braunschweig, Germany.  E-mail:

       pcl3  has  a  home  page	(link to URL
       tin.Lottermoser/pcl3.html)  on the Web.

       This is free software, released under the terms of the GNU Lesser  Gen-
       eral  Public  License  (LGPL)  (link  to	 URL
       left/lesser.html) , Version 2.1.	 USE IT	AT YOUR	OWN RISK.

       Version of this reference page: $Revision: 1.21	$  ($Date:  2001/08/18
       17:19:29	$).

pcl3 3.3							    GS-PCL3(1)


Want to link to this manual page? Use this URL:

home | help