From The Linux Foundation
Jump to: navigation, search

The old content of the printing page is on CUPS.

Printing for LSB


Printing interfaces and infrastrucure are scheduled to be added to LSB.

Current UNIX printing uses a client/server model where applications are the clients that send print requests to a print server. The print server then takes the information and splits off job information from print information. The job information is metadata that that describes how many copies, which paper tray, which printer, etc, while the print data is what is converted into dots on paper or a display device.

Currently most Linux distros and MacOS X use CUPS (Common UNIX Print System) for printing. CUPS uses the Internet Printing Protocol (IPP) to send requests from a client to the server. IPP is an IEEE Standard; Solaris 10 now provides an IPP-capable print server. However, CUPS is not included in all base *NIX systems and is an add-on for Solaris, AIX, and various BSDs.

A generic API for print services PAPI is being developed by the OpenPrinting Workgroup of the FSG. However, PAPI is missing printer description infrastructure such as PPD access functions. PAPI is not included in any of the current mainstream Linux distros.

The renderer in CUPS requires linking with with libcupsimage, and the licensing requires a fee or the release of the source code of anything linked to it. Options to CUPS renderer include the OpenPrinting Vector which was developed by Japanese printer manufacturers and IJS which originated from HP's inkjet raster.

OpenPrinting vector download OpenPrinting Vector Driver API

OpenPrinting Vector and IJS are currently included in ESP Ghostscript and are included in the latest versions of most distros. The bleeding edge of ghostscript development is now becoming the GPL version from Artifex, so the OpenPrinting Vector driver is likely to be included in the "main" ghostscript.

Current plans for LSB 3.2

Driver Interfaces

Add IJS (raster) interface.

IJS is a protocol for transmission of raster page images.

The glue code for IJS is part of ESP GhostScript 8.15.1 or later and ships with the latest release of major distros. A spot check of FC5, Debian Etch, and SLED10 shows espgs 8.15.1 is available with the IJS drivers.

Addition of OpenPrinting Vector has been postponed pending the finalization of the standard. It is also unclear whether the glue code for OpenPrinting Vector included in EPS Ghostscript is enough to create a complete, restriction-free driver.

Standard directories for print drivers

The OpenPrinting printing-architecture group is defining a set of directories to use for printer drivers and printer descriptions (PPDs at this time). This is to overcome issues with SELinux and also allow vendors to quickly install or find printer drivers and descriptions.

Add an application-facing API

The CUPS API and the CUPS PPD API are scheduled to be added to LSB 3.2. Details are on the CUPS API web page.

The previous suggestions from Till Kamppeter for LSB 3.2.

Issues with the additions to LSB 3.2

OpenPrinting Vector

OpenPrinting Vector is stable, but has never been officially released. As of 7/17/2006, the English documentation is still being translated. Only the glue code is available in esp-ghostscript, but some of the comments in the code are in Japanese.

Standardized directories

The Standardized directory specification is not even at the draft stage as of 7/17/2006. Also, there are no examples of the directory specification in use with any Linux distro.


As mentioned above, CUPS is available on most targetted *NIXes, but is only distributed standard base installations on Linux distros. CUPS is not distributed with Solaris and AIX.