Chapter 5. Printer Operation

Table of Contents

5.1. Printing Basics
5.2. Preconditions for Printing
5.3. Configuring a Printer with YaST
5.4. Configuring Applications
5.5. The CUPS Printing System
5.6. Printing from Applications
5.7. Command-Line Tools for the CUPS Printing System
5.8. Printing in a TCP/IP Network


This chapter discusses various aspects of the printing system in general. It should also help with finding solutions for problems related to network printers.

5.1. Printing Basics

On a Linux system, printers are managed with print queues. Before any data is printed, it is sent to the print queue for temporary storage. From there, the print spooler sends the data to the printer.

However, this data is predominantly not available in a form that can be processed by the printer. A graphical image, for example, first needs to be converted into a format the printer can understand. This conversion into a printer language is achieved with a print filter, a program run by the print spooler to translate data as needed so the printer can process it.

5.1.1. Important Standard Printer Languages

ASCII text

Most printers are at least able to print ASCII text. The few devices that cannot print ASCII text directly should be able to understand one of the other standard printer languages mentioned below.


PostScript is the established printer language under Unix and Linux. PostScript output can be printed directly by PostScript printers. However, these printers are relatively expensive, because PostScript is a powerful yet complex language that requires a lot of computing in the PostScript printer before actually putting something on paper. Adding to the price of PostScript printers are licensing costs.

PCL3, PCL4, PCL5e, PCL6, ESC/P, ESC/P2, and ESC/P raster

If a PostScript printer is not available, the print filter uses the program Ghostscript to convert PostScript data into one of these other standard languages. Ghostscript uses different drivers for different printers to make use of specific features offered by the various models, such as color settings.

5.1.2. Processing Print Jobs

  1. A print job is started by the user either from the command line or from an application.

  2. The corresponding print data is temporarily stored in the print queue. It is retrieved from there by the print spooler, which sends it to the print filter.

  3. The print filter performs the following steps:

    1. The filter determines the format of print data.

    2. If the print data is not in PostScript format, it is first converted to the standard language PostScript. Usually, ASCII text is also converted to PostScript.

    3. The PostScript data is converted into another printer language, if necessary.

      • If the printer is a PostScript model, the data is sent to it with no further processing.

      • If the printer is not a PostScript printer, the program Ghostscript is run and uses one of its drivers to convert data into the language of the printer model. This generates the data that is finally sent to the printer.

  4. As soon as all the data of the print job has been sent to the printer, the print spooler deletes it from the print queue.

Figure 5.1. The Printing Workflow

The Printing Workflow

5.1.3. Various Printing Systems

SUSE LINUX supports two different printing systems:

LPRng and lpdfilter

This is a traditional printing system consisting of the print spooler LPRng and the print filter lpdfilter. The configuration of this system must be entirely defined by the system administrator. Normal users can only choose between different print queues that have already been configured. To allow users to choose between different options for a given printer, a number of print queues should be defined beforehand — each for a different printer configuration. For plain black-and-white printers, such as most laser printers, it is sufficient to define just one configuration (the standard queue). For modern color inkjet printers, define several configurations, for example, one for black-and-white printing, one for color printing, and maybe another one for high-resolution photograph printing. Setting up the printer with predefined configurations has the advantage that the system administrator has a lot of control over the way in which the device is used. On the other hand, there is the disadvantage that users cannot set up the printer according to the job at hand, so maybe they will not be able to use the many options offered by modern printers unless the administrator has defined the corresponding print queues beforehand.


CUPS allows users to set different options for each print job and does not require the entire configuration of the print queue to be predefined by the system administrator. With CUPS, printer options are stored in a PPD (PostScript printer description) file for each queue. These can be made available to users in printer configuration dialogs. By default, the PPD file gives users control over all printer options, but the system administrator may also limit printer functionality by editing the PPD file.

Under normal conditions, it is not possible to install these two printing systems concurrently, as there are conflicts between them. However, you can switch between the two print systems with YaST (see the information in User Guide).