Now that you know how a PostScript® language file (which describes the page layout in a largely device independent way) is transformed into a Raster Image, you might ask: “Well, there are different kinds of raster output devices: first they differ in their resolution; then there are the different paper sizes; it goes on with many finishing options (duplex prints, pamphlets, punched and stapled output with different sheets of colored paper being drawn from different trays, etc.). How does this fit into our model of device-independent PostScript®?”
The answer comes with so called PostScript® Printer Description (PPD files. A PPD describes all the device dependent features which can be utilized by a certain printer model. It also contains the coded commands that must be used to call certain features of the device. But PPDs are not a closed book, they are simple ASCII text files.
PPDs were “invented” by Adobe to make it easy for manufacturers to implement their own features into PostScript® printers, and at the same time retain a standard way of doing so. PPDs are well documented and described by Adobe. Their specification is a de-facto open standard.
Remember, advanced PostScript® printing was originally only developed for use on Microsoft® Windows® and Apple Mac® systems. For a long time, all of the feature rich printing on modern devices was simply unavailable for Linux® and UNIX®. CUPS changes this decisively. CUPS is closely tied with PPDs, and therefore existing PPDs can be utilized to the full by all systems powered by CUPS.
Using PPDs, printer manufacturers were able to insert device-specific hardware features into their products, for features such as duplexing, stapling, punching, finishing, etc.. The printer drivers load this PPD just like an additional configuration file. Thus the printer driver learns about the available device options and how to call them; the driver also presents them in a GUI to the user. Through this mechanism you are still able to print “device-independent” PostScript® page description language files and specify device-dependent finishing options on top, which are added to the application-generated PostScript®.
PPDs originally were not used routinely in UNIX® and Linux® systems. The vendors providing those PPDs never intended them for anything other than the originally supported operating systems: Microsoft® Windows® and Mac® OS. Through its brilliant move to fully support and utilize the existing PPD specification, CUPS now gives the power to use all features of modern printers to users of Linux® and Linux®-like systems. KDEPrint makes its usage even more comfortable than the CUPS developers ever dreamed of.
CUPS can use original Windows® PPDs, distributed by the vendors in the case of PostScript® printers. Those normally don't cost any money, and they can be grabbed from any Windows® computer with an installed PostScript® driver for the model concerned, or from the disks provided with the printer. There are also several places on the web to download them.
Now you know how PostScript®-Printers can use PPDs. But what about non-PostScript® printers? CUPS has done a very good trick: by using the same format and data structure as the PostScript® Printer Descriptions (PPDs) in the PostScript® world, it can describe the available print job options for non-PostScript® printers just the same. For its own special purposes CUPS just added a few special options (namely the line which defines the filter to be used for further processing of the PostScript® file).
So, the developers could use the same software engine to parse the Printer Description Files for available options for all sorts of printers. Of course the CUPS developers could not rely on the non-PostScript® hardware manufacturers to suddenly develop PPDs. They had to do the difficult start themselves and write them from scratch. More than 1000 of these are available through the commercial version of CUPS, called ESP PrintPro.
Meanwhile there are a lot of CUPS-specific PPDs available. Even now those are in most cases not originating from the printer manufacturers, but from Free software developers. The CUPS folks proofed it, and others followed suit: where Linux® and UNIX® printing one or two years ago still was a kludge, it is now able to support a big range of printers, including 7-color inkjets capable of pushing them to Photo Quality output.
You can get PPDs to be used with CUPS and non-PostScript® printers from different areas in the Web:
first, there is the repository at www.linuxprinting.org, which lets you generate a “CUPS-O-Matic”-PPD online for any printer that had been supported by traditional ghostscript printing already. This helps you to switch over to CUPS with little effort, if you wish so. If your printer was doing well with the traditional way of ghostscript printing, take CUPS-O-Matic to plug your driver into th e CUPS system and you'll have the best of both worlds.
second, there are CUPS-PPDs for the more than 120 printer models, which are driven by the new universal stp driver. stp (stood originally for Stylus Photo) is now developed by the gimp-print project; it was started by Mike Sweet, the leading CUPS developer and is now available through gimp-print.sourceforge.net. This driver prints real Photo quality on many modern inkjets and can be configured to make 120 CUPS-PPDs along its own compilation. HP® Laser- and DeskJet, Epson® Stylus and Photo Color models as well as some Canon® and Lexmark® are covered.
third, there is the commercial extension to CUPS from the CUPS developers themselves: it is called ESP PrintPro and comes with more than 2.300 printer drivers. There are even improved imagetoraster and pstoraster filters included.
CUPS makes it really easy for manufacturers to start supporting Linux® and UNIX® printing for their models at reasonably low cost. The modular framework of CUPS facilitates to plug in any filter (=driver) with minimal effort and to access and utilize the whole printing framework that CUPS is creating.
Read more about the exciting CUPS features in the available CUPS documentation at http://www.cups.org/documentation.html and http://www.danka.de/printpro/faq.html. Also at http://www.linuxprinting.org/ is a universal repository for all issues related to Linux® and UNIX® printing.
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team