Michael Sweet, Easy Software Products, 9 June 1999
One of the biggest problems facing new Linux users
is printing. This article describes our Common UNIX Printing System, an open
source product provided under the Aladdin Free Public License, and
ESP Print, a
commercial product, both of which are breaking new ground for UNIX
printing. While we are definitely "tooting our own horn", we hope
that you'll find it both interesting and an exciting glimpse of
things to come. The days of searching for printer drivers and
cursing that vendor XYZ won't support your operating system will
soon be gone!
One of the biggest problems facing most first time users of
UNIXÂ® (and Linux, of course) is how to print from an
application. This isn't because of a lack of printing support in
applications, but rather because UNIX lacks a standard printing
interface like MicrosoftÂ® WindowsÂ® or MacOS.
The System V (lp) and Berkeley (lpr) printing
systems provided with most UNIX operating systems were designed a
long time ago and typically only support simple text or PostScript
printers. The owner of a low cost inkjet or laser printer quickly
finds out that printing is a much more complicated matter than just
pressing the "print" button in an application!
A partial solution to the printing problem is to use the popular
GNU GhostScript software to act as a printing filter (Red Hat Linux
offers this option, for example.) PostScript files produced by an
application are converted to a bitmap by GNU GhostScript which can
be sent to the printer using the appropriate GNU GhostScript
driver, all without any interaction from the user.
One problem with this solution is that you generally aren't
taking advantage of all the features or capabilities of a printer.
It is difficult if not impossible to change print settings like
media size and output resolution (some applications do support this
by embedding the appropriate PostScript commands in the print
Another problem is that many vendors are simply unable to
release source code for their drivers because of non-disclosure
agreements or trade secrets. This means that they can't be
integrated into GNU GhostScript at all!
What vendors really need is a standard printer driver interface
that can be used to develop standalone printers drivers for
Enter the Common UNIX Printing
System, or CUPS. CUPS is designed to eliminate the printing
problem. One common printing system can be used by all UNIX
variants to support the printing needs of users. Printer vendors
can use its modular filter interface to develop a single driver
that supports a wide range of file formats with little or no
effort. Since CUPS provides both the System V and Berkeley printing
commands, users (and applications) can reap the benefits of this
new technology with no changes.
Internally CUPS uses filter programs that allow a user or
application to print many types of files without extra effort. Some
filters convert job files to different formats that the printer can
understand. Others perform page selection and ordering tasks.
Backend filters perform the most important task of all - they send
the filtered print data to the printer.
Commercial printer drivers for Linux using CUPS will be
available soon in our popular ESP Print software, which
supports over 1200 printers! ESP Print allows you to add a printer
with a few mouse clicks, which makes installing new printers a
snap. Since ESP Print uses CUPS, all of your applications will work
with your printer.
We are also working with several printer vendors to license
Linux drivers that will be included with their printers like the
Microsoft Windows and MacOS drivers. The next printer you buy may
come with a Linux driver inside the box!
Clearly a bright new future for printing on Linux is coming!
The Common UNIX Printing System, CUPS, and the CUPS logo are the
trademark property of Easy Software Products. Information on ESP
Print can be found at "http://www.easysw.com". Information on
CUPS can be found at "http://www.cups.org". You can also
contact us by telephone at +1.301.373.9600 or by email at "firstname.lastname@example.org".