Back to this website's entry point
Ghostscript is a PostScript and PDF interpreter, i.e., a program accepting a PostScript or PDF file as input and generating a representation of it in another format. Ghostscript was originally developed by L. Peter Deutsch of Aladdin Enterprises, California.
Ghostscript is divided into a kernel, which understands PostScript and PDF, and Ghostscript drivers. A Ghostscript driver implements one or more output devices. The user calling Ghostscript selects a particular output device (and hence a particular driver), and the kernel then calls the driver to do basic drawing operations and to ship out completed pages in a format specific to a particular kind of hardware or software.
Most Ghostscript drivers are not separately loadable but have to be compiled into the Ghostscript program. If you want to change the set of output devices offered by your Ghostscript executable you therefore usually have to recompile it.
Ghostscript source code was originally distributed in two forms: as Aladdin Ghostscript, later called AFPL Ghostscript, and as GNU Ghostscript, later called GPL Ghostscript. These distributions differed in their licensing terms: a GPL Ghostscript distribution with a particular version number was usually a re-issue of the AFPL Ghostscript distribution with the same number but with less restrictions on commercial (re-)distribution. The GPL variant was typically released about a year after the AFPL distribution at the time when the next AFPL release occurred (and occasionally much later).
Since 2007 (Ghostscript 8.54), all new development occurs only in the GPL distribution.
Ghostscript distributions can be found on the Internet in various places. In addition, all free UNIX distributions I know of contain a compiled Ghostscript distribution, frequently with an extended set of Ghostscript drivers. A typical example of this kind was ESP Ghostscript which was based on GPL Ghostscript but added a number of extensions and bug fixes.
ESP Ghostscript was merged into GPL Ghostscript in the summer of 2007 (Ghostscript 8.60).
The main WWW resource for Ghostscript is http://www.cs.wisc.edu/~ghost (but see also http://ghostscript.com). It tells you what the current version of Ghostscript is, how to obtain it, and what other programs and pieces of information are of interest in this context.
In addition, every Ghostscript distribution contains extensive documentation.
Pcl3 is a Ghostscript driver for printers understanding
Hewlett-Packard's Printer Command Language, level 3+
(PCL 3+, also called PCL 3 Plus
).
This applies in particular to some but not all HP DeskJet printers.
The driver was therefore initially called hpdj
but was renamed pcl3
with version 3.0.
Originally, the main design goals of this software were
maintainability, reliability,
and support for new
DeskJets, starting with the HP DeskJet 540.
For version 3, I wanted to have in addition a substantial proportion of
reusable software components.
Reliability was mainly achieved by strict adherence to HP's official documentation, as far as it could be obtained. Unfortunately, the information offered by Hewlett-Packard was not as up-to-date as I could wish. However, it seems that I have achieved my goal in this respect because since its first public release in March 1997 (hpdj 2.0) the driver has turned out to be able to support a gratifyingly large number of PCL-3 printer models beyond those for which it was originally written. In fact, although there have been cases where the driver did (or still does) not support some features relying on undocumented PCL-3 commands, in the region where a printer's capabilities intersect with the set of documented PCL-3 commands used by the driver, pcl3/hpdj has been successful out of the box in every single case I heard of. It now even supports some printers which claim to be PCL-3-conforming but aren't.
The main features of pcl3 are:
Pcl3 does not support different resolutions for black and CMY colorants, i.e., there is no combined 600 ppi black + 300 ppi CMY mode, and it does not support photo cartridges.
Pcl3 is in particular intended for the following printers:
The current list of printer models for which pcl3 is known to work is:
Details on how to call pcl3 for these printers are contained in the file reports.txt. In addition, I have received informal statements that pcl3 can also be used with the following models:
Previous (hpdj) versions were reported to work also with the following printers:
It is extremely likely that pcl3 can also be used for these printers, but I have not received reports for them. My impression is even that every PCL-3-conforming printer can be made to print with pcl3 although not all of the printer's capabilities might be accessible.
If your printer is not contained in the lists above, you should also check the entry for pcl3 in the OpenPrinting database. However, in my experience the information there was not always reliable.
You should be aware that Hewlett-Packard does not only produce
PCL-3 ink jet printers.
If the 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 using
HP's Printing Performance Architecture (PPA) commands and
is intended exclusively for systems running Microsoft Windows.
(These printers are sometimes inaccurately called GDI printers
because they are expected
to be driven by a manufacturer-supplied driver via Windows' GDI interface.)
HP does not release the PPA interface specifications.
Nevertheless, it is possible to access at least a PPA printer's basic features
from Ghostscript; see http://sourceforge.net/projects/pnm2ppa.
Pcl3 may be used under the terms of the GNU Lesser General Public License (LGPL), Version 2.1.
Since the merge of ESP Ghostscript into GPL Ghostscript in 2007 (Ghostscript 8.60), pcl3 is already contained in the ordinary Ghostscript distribution. Unless you wish to use an older version of Ghostscript there is no need to download pcl3 separately because there is at present no newer version of pcl3.
The main location for pcl3 distributions is the directory http://home.vrweb.de/martin.lottermoser/pcl3/dist. It contains gzipped tar archives with the source code. Usually you should fetch the file pcl3-version.tar.gz with the highest version number.
Occasionally, I have been asked why this software was not part of the main Ghostscript distributions. That is a long story.
I offered hpdj to L. Peter Deutsch twice, in September 1996 and in March 1997, but he declined on both occasions. The first time hpdj did not yet contain colour support (actually, he offered to pay me for implementing a fully usable DeskJet driver, but I in turn declined because I wished to distribute the software immediately under a GNU license), and the second time he would have preferred an integration with the uniprint driver because there were already so many drivers for ink jet printers. These considerations did, however, not stop him from including the make configuration for Uli Wortmann's new DeskJet driver in the official gs distribution shortly afterwards. This suggested that he had other reasons than those stated for not being interested in hpdj and I therefore gave up on this point. (Although he at least added a reference to hpdj in new-user.txt in gs 5.01, this was removed some time after 5.10 and before 5.50.)
In December 1999, triggered by hpdj users, L. Peter Deutsch in his turn approached me and asked whether I would consent to the driver being distributed under the AFPL. He was under the impression that hpdj was released under the GNU GPL whereas it was actually distributed under the terms of the GNU LGPL. Under the latter, it could have been included in an AFPL Ghostscript distribution without needing my explicit consent. Hence L. Peter Deutsch decided (still in December 1999) that he would include it in the future or at least add a reference to it in the documentation. Neither had happened when he passed the maintainership to Raph Levien of artofcode LLC in September 2000.
In October 2001, Raph Levien accidentally came across this web site and offered to include the software in the Ghostscript distribution. Again, there was a slight hitch: I was told that artofcode LLC was not particularly happy with a driver licensed under the GNU LGPL and would have preferred to distribute it under the AFPL. This in turn presented me with a problem: as the AFPL for Ghostscript explicitly stated that artofcode LLC holds the copyright for the program as a whole, my consent to distributing this software under the AFPL would obviously imply that I've transferred certain rights to artofcode LLC. I therefore asked immediately which rights in my source code artofcode LLC would need and in particular which rights I would have to give up. This e-mail message was never answered, and there the matter rested.
I concluded from all this that the key property which had prevented pcl3 from being included in the main Ghostscript distributions was not the license but that I hold the copyright. As no one was able to show me any argument why this is a bad thing for end users (in contrast to firms trying to earn money with it), I had no intention to change this situation. (If you are interested in this topic, you might wish to read the motivation for the GNU licenses.)
Many people therefore had to fetch pcl3 separately and to recompile Ghostscript. However, several free UNIX distributions (S.u.S.E. Linux, FreeBSD, and Debian GNU/Linux) have been including hpdj in one of their Ghostscript packages since 1997/1998, Red Hat Linux followed later. Mandrake Linux was one of the first distributions to provide pcl3 version 3. Since July 2002, pcl3 was also contained in the ESP Ghostscript distribution. Note, by the way, that none of the organizations creating these distributions had any problems with hpdj/pcl3 using the GNU LGPL or me holding the copyright.
Finally, with ESP Ghostscript's merge into GPL Ghostscript, pcl3 has found its way into Ghostscript's mainline and this topic has fortunately become obsolete.
I do not offer any guarantee that this software is harmless for your printer, your cat's life, or the future of the universe. USE IT AT YOUR OWN RISK!
You can find the current bug list for pcl3 here.
Pcl3 is not the only Ghostscript driver generating PCL 3.
Apparently the first implementation was George Cameron's cdj driver which was intended for most of the DeskJet 500 series printers. It is still contained in all Ghostscript distributions. I started the development of hpdj in 1996 because I found cdj's functionality insufficient for the printer I had bought and its source code not sufficiently intelligible to be easily modified. This was reflected in hpdj's design goals.
Gunther Hess has written the uniprint driver which has been included in Ghostscript distributions since version 4.70. It was intended to become a universal driver for ink jet printers and evolved from cdj via the stcolor driver.
Uli Wortmann has modified the cdj software for series-800 DeskJets. His cd8 driver became part of the main Ghostscript distribution in gs 5.67, was removed in gs 6.22 from the AFPL distribution (because of its license), was again added to GNU Ghostscript 6.51, was no longer contained in GNU Ghostscript 7.05, but reappeared with ESP Ghostscript.
At least two people have modified Uli's software for other printers. The modification by Matthew Gelhaus (output device cdj880) is available via www.gelhaus.net, the variant implemented by René Harsch for the DJ 970C can be found at www.harsch.net.
Most of these Ghostscript drivers have been marked as deprecated in November 2002 (Ghostscript 8.00) and will no longer be maintained in the core distribution.
Newer implementations include the PCL driver in Gutenprint and software from the HP Linux Printing and Imaging Project. The OpenPrinting database is a good starting point if you wish to search for drivers.
If you are unable to find a Ghostscript driver satisfying your requirements among these choices, you can of course always write a new one. This became increasingly popular around 1995-2000, but in my opinion it has not always been undertaken with a sufficient knowledge of professional software development, PostScript, Ghostscript, or PCL: most source code is poorly documented, hardly anyone seems to have realized that Ghostscript's driver API does not insulate the drivers completely from the demands of PostScript, and very few people give references to the PCL documentation used (which makes it difficult to determine whether a particular printer's PCL dialect is supported by the driver). In looking at such software, one often gets the impression of being faced with an amateur effort undertaken for the fun of it and not because the authors recognized a serious gap to be filled. This agrees with the observation that most of these authors refer to hardly any other PCL-3 software in their documentation or source code; they do not seem to have looked for any.
However, don't get me wrong: it is perfectly in order to write a new Ghostscript driver just for the fun of it, even if it offers only functionality already implemented by existing software. But if you start publishing it for other people to use you have certain responsibilities concerning usability, reliability, documentation, and maintenance. This is sometimes ignored.
The pcl3 distribution contains a document discussing various issues which I think should be considered before embarking on a new Ghostscript driver.
Last update: $Date: 2009-06-06 03:17:44 $