Contents Projects and Software

Here are a few links to various printing-related projects:


Gutenprint provides the highest quality free printer drivers around. Color inkjet users will in most cases get the best results with this project's code. The driver has various interfaces: Plug-in for the GIMP, plug-in for GhostScript (IJS interface, GNU/GPL GS >= 6.53, APFL GS >= 7.04, ESP GS >= 7.x), native CUPS driver.
HPLIP - HP Linux Imaging & Printing
HP's free drivers for their printers and multi-function devices. It supports most HP printers (including some non-PCL/non-PostScript devices) to their full quality, duplex printing, full-bleed, photo cartridges, ... The printer driver for the non-PostScript printers is an IJS plug-in for ESP GhostScript >= 7.x, GNU/GPL GhostScript >= 6.53, AFPL GhostScript >= 7.04. In addition there is a low-level driver to support all non-printing functions like ink/toner/battery level checking, nozzle cleaning, scanning, faxing, memory card access, ..., a SANE driver for scanning, and a graphical tool for easily accessing these functions.
PostScript PPDs released as free software by printer manufacturers
PostScript is the native print data format under Linux and Unix. Therefore one gets PostScript printers perfectly working when one knows about their model-specific commands and properties. This information is available in a both human- and machine-readable format, in the PPD files supplied by the printer manufacturer and intended to tell generic PostScript drivers about printer-specific stuff. The printing systems CUPS and PPR support PPDs natively, and under other printing systems one can use them with Foomatic and so get access to the full functionality of PostScript printers.
Many manufacturers released their PPDs under a free licence (mainly MIT) and made them available here from Thanks to everyone who is participating
To get your PostScript printer working, download its PPD file and follow the instructions for setting up a print queue for a PostScript printer with your printing system (CUPS, LPD/LPRng/GNUlpr, PDQ, PPR, No spooler) and the general instructions for using PPD files. There are also some PPDs for non-PostScript printers which use the "pxlmono" driver.
GPL Ghostscript
This is the PostScript interpreter used by GNU/Linux, Unix and alike operating systems to be able to print on non-PostScript printers. Nearly all Unix applications produce PostScript when one sends a file to the printer, and Ghostscript takes this PostScript as input and produces the native language of any printer for which it has drivers. It also serves for PostScript printers: Either for downgrading the PostScript level to an older one or to embed fonts into the PostScript data stream. Many older drivers have to be compiled into GhostScript, but the newer versions (GNU/GPL GS >= 6.53, APFL GS >= 7.04) offer the IJS interface for driver plug-ins and GPL Ghostscript from 8.60 on also the CUPS Raster and OpenPrinting Vector interfaces. Do not use ESP Ghostscript any more. It was discontinued and all its functionality and drivers merged into GPL Ghostscript at version 8.60.
A plug-in interface which allows to add new drivers to GhostScript without needing to patch and recompile it. This way also inexperienced users can add new printer drivers to their systems. Later on it is also planned that one can ask the driver executable for available options and printer capabilities.
The Linux Parport Driver
Tim Waugh maintained the parport drivers (mainly for printing and scanning) in the Linux kernel some time ago.


CUPS was written by Easy Software Products (ie Michael Sweet) as an implementation of the HTTP-like Internet Printing Protocol. CUPS is the recommended spooler especially for printing in networks, because it is easy to configure due to automatic recognition of remote printers and so configuration-less clients. Also printer option information is made available to the clients. Printer capability information is handled with PPD files, so it is easy to get every PostScript printer working perfectly with it. Non-PostScript printers are as well supported with Foomatic-generated PPD files and foomatic-rip or with the CUPS drivers of Gimp-Print and some proprietary packages. Nearly every distribution uses CUPS as standard printing system. It is also very nicely intergrated in KDE 2.2.2 and newer.
LPRng is a newer implementation of an LPD-protocol based print spooler done with the goal of a high security level. This is pretty much a thing to use for any medium-to-large installation, as it interoperates well with existing systems and has some good centralized management features. The administration is not so easy as with CUPS.
PPR is a Postscript-centric (but it'll do the venerable Ghostscript trick, preferrably with Foomatic) print spooler written by and for Trinity College. It has rather good job control and user feedback information (including a "You've Got Paper!" A*L-esque job notification mechanism).
CPS (Coherent Printing System) is a Foomatic/GhostScript-based print spooling system for Linux which controls printers correctly even when the same physical printer is used in several different modes under different names (e.g., draft, colour, and greyscale on the same inkjet). All spooling is handled by the central daemon which allows network job submission to work without installing the print daemon, Foomatic, or GhostScript on the client machines. Samba printing is also catered for. CPS is written completely in Perl. The license is somewhat strange, the software seems to be free but not it's name.
PDQ is a system Grant recommended in the HOWTO as CUPS did not reach the level of maturity as it has now; it's a good printing system for non-networked setups (or work place printers) because it is easy to install and to configure. It has no daemon which can crash or can be attacked through a dial-up internet connection and it also does not require any pseudo-network configuration (as the "localhost" network device). Due to being daemon-less you cannot share your printer with other users on the LAN. The system is not maintained any more, and a new maintainer is welcome. Please contact Till if you want to volunteer. Using Foomatic you can use PDQ with every printer which works with free software, for PostScript printers you can use the manufacturer-supplied PPDs, and you can directly print any file type which a2ps knows.
A (formerly) HP-funded project by VA Linux to provide better support for printing. Thus far, they've added some new features and peripheral software to the regular LPD. Plans exist to replace LPD with something nicer. The main person on this, Ben Woodard, was the person who ran all the Linux-based printing at Cisco. The GPR printing frontend is a nice candidate to get a spooler-independent GUI for Foomatic (Till did some work on that) and libppd can be used for PPD-aware applications. The GNUlpr project is not maintained any more, but it has some interesting code which one can re-use for other printing-related projects.
CEPS is the system used at Cisco. It's a suitable printing system for a large company; work from this is expected to be absorbed into future projects. The project looks rather dead, most files on the CVS are several months old, but there are some files checked in end of March 2002.

Printer Capabilities Handling/General Filters

Foomatic is a database-driven system for integrating free software printer drivers with common spoolers under Unix. It supports CUPS, LPRng, LPD, GNUlpr, PDQ, PPR, CPS, and direct spooler-less printing with every free software printer driver known to us and every printer known to work with these drivers. It makes all adjustable options and features of the drivers available to the user. It uses PPD files and so gives also full access to the printer features out of applications as or from Windows/MacOS clients. And it fully supports PPD files provided by manufacturers of PostScript printers, and so most PostScript printers work perfectly with every spooler.
Apsfilter is also an infrastructure for integrating free software printer drivers with spoolers under Unix and alike operating systems, but in contrary to Foomatic it supports only BSD-stylish spoolers as LPD or LPRng. It also does not support PPD files. There are some things in Apsfilter which Foomatic does not support, as the possibility to print compressed files and the e-mail-controlled manual duplex.
a2ps is an Any to PostScript filter. It started as a Text to PostScript converter, with pretty printing features and all the expected features from this kind of programs. But today, it is also able to deal with other file types (PostScript, Texinfo, compressed, whatever...) provided you have the necessary tools. (description from the a2ps home page) a2ps is a good pre-filter for printer spoolers as it converts nearly everything printable to PostScript. Therefore it is used as file conversion filter by the Foomatic filter foomatic-rip to make non-PostScript files printable with every spooler.

User Interfaces

KDE Print
Since version 2.2.x KDE ships a very sophisticated printing interface which works with CUPS, LPD/LPRng/GNUlpr, and as daemon-less LPD client (with "rlpr"). It consists of the KDE Print Manager, a graphical interface to set up printer queues and to handle jobs, and "kprinter" a graphical interface for printing, which also serves as the printing dialog for all KDE applications. Since KDE 3.x KDE Print supports Foomatic for setting up CUPS and LPD/LPRng/GNUlpr queues.
XPP is a graphical frontend for the CUPS system. It lets you select all the options from a dialog box instead of using obscure command-line options. It is small and does not depend on any desktop environment.
PPD-driven graphical printing frontend originally intended for LPD and similar spoolers. With the help of the Foomatic PPD files, it can be used with any printer and any spooler. Till did some work on it to make it nicely working with Foomatic and different spoolers.


MTink, D4, XW-Tools, and more.
Jean-Jacques Sarton has developed several tools and drivers for inkjet printing under GNU/Linux and Unix, as the free "MTink" tool to display the ink levels, clean the nozzles, and align the heads of Epson inkjets, or the also free "D4" utility for Epson's multi-function devices (Epson Stylus Scan 2000/2500). The printer driver suite "XW-Tools" and the maintenance utilities for Canon contain closed-source parts but most of the source is available and they are free of charge for non-commercial use.

Enterprise Print Queue Management

Printer Setup.
Henri Shustak has developed PrinterSetup.

CUPS Print Accounting

Jérôme Alet has developed PyKota; a comprehensive and feature rich open source CUPS print accounting system.
Lucid Information Systems has developed PrintingWorks a top to bottom open source print accounting solution. PyKota is the PrintingWorks back-end accounting engine. PrintingWorks offers various components which add additional functionality or assist with the daily administration of PyKota.