PPD files vs printer drivers also LPD vs LPRng vs CUPS

Warren Block wblock at wonkity.com
Sat Nov 10 16:18:04 PST 2007

On Sat, 10 Nov 2007, Predrag Punosevac wrote:

> I am trying to understand little bit better Unix printing. I am 
> terribly confused about the real meaning of PPD files and printer 
> drivers.
> According to this http://en.wikipedia.org/wiki/PostScript_Printer_Description
> PPD files are post script description files that act as a drivers for post 
> script printers.

PPDs are files that describe what a PostScript printer can do.  They may 
have PostScript routines in them that can be used by a driver to take 
advantage of the printer's abilities.

> According to same page CUPS-PPD are used by CUPS to do post-script 
> printing on non-postscript printers by directing files through 
> CUPS-filter. Could somebody explain this things better to me. Every 
> time I used CUPS the PPD files where enough to enable me printing. Did 
> I really use some other drivers beside these PPD files or did CUPS 
> communicate with my printers with some generic driver and just uses 
> PPD files to do filtering.

Can't comment much on CUPS; I've never had the patience to work on it 
much.  I prefer to have the responsibility to send correctly-formatted 
files to the printer myself, rather than have a filter system try to 
format things automatically.

> What is the simplest way to send ps file to the printer that doesn't speak 
> ps? If I could do that everything else is peace of cake.

Ghostscript is used to render a PostScript file into something the 
printer can handle.  Ghostscript has a lot of built-in printer drivers. 
For example:

/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=ljet4 -sOutputFile=- -

That takes PostScript on stdin and converts to PCL on stdout.

If you save that to /usr/local/libexec/ps2pcl and make it executable, 
you can use it as an input filter in a printcap entry.

gs -h will show you a list of built-in printer drivers in Ghostscript.

> Could anybody explain me if there are some strong reasons for choosing LPD 
> over CUPS or LPRng system (seems just GUI added on the top of LPD)
> It would logical to me that LPD is safer (CUPS port has some security 
> warnings) and maybe more reliable. In any case it is included in the base 
> system and I prefer to use something included in the base system

Printer filter systems have varying degrees of complexity and 
dependencies.  lpd with simple filters is probably the simplest, with 
the lowest overhead because it's part of the base system.

-Warren Block * Rapid City, South Dakota USA

More information about the freebsd-questions mailing list