System Administration Guide: Solaris Printing
Previous Next

Implementation of the Open Standard Print API

The Solaris implementation of the Open Standard Print API, also referred to as PAPI, makes it possible to layer applications, toolkits and print commands on top of a print service, protocol neutral interface. This implementation can be used with RFC-1179, IPP-based, and LP-based printing services. Printer, server, and job attributes, as well as job submission and queries to a printer, are among the supported PAPI functions. This support enables the print client, be it an application, or the print commands themselves, to query the print system about the characteristics of a printer and to request information.

For more information, see the following references:

PAPI Print Client Commands

Historically, printing commands have been tied to a specific print system because they have been implemented on top of print system specific protocols and interfaces. Examples include the BSD, LPR, SysV LP, LPRng, and CUPS printing protocols. The introduction of the PAPI, makes it possible to layer these print commands on top of a print service, protocol neutral, interface.

The PAPI provides applications a single interface for print service interaction. This means that applications can be written to use this interface and work with a variety of print services without requiring changes to the applications. Applications are no longer tied to a particular print service, such as the LP print service or CUPS. Instead, print services can easily be replaced on a system without impacting the protocol or application layers above. Ultimately, print services can be both developed and selected based on specific needs.

The PAPI interacts with the lpsched command and RFC-1179-based servers. PAPI also enables interaction with CUPS servers by using libcups and native IPP client-side support. The PAPI supports that is available in the Solaris OS includes the modification of several common BSD and SysV printing commands. The new command implementations are layered on the PAPI. Hence, these commands can work with a variety of printing services.

The PAPI implementation in the Solaris OS also includes server-side and client-side support for IPP, which is layered on top of the PAPI. IPP is implemented as a set of protocol-specific libraries and an Apache module. Like the command implementations, the IPP Listening Service can be used with any printing service that supports the PAPI. Server-side support for the RFC-1179 protocol is also available. For more information, see Chapter 3, Setting Up Printing Services (Tasks).

The following is a list of the PAPI supported components:

  • libpapi-common.so – Core PAPI attribute support

  • libpapi.so – PAPI library with dynamic backend support

  • psm-lpd.so – PAPI support on top of the RFC-1179 protocol

  • psm-ipp.so and libipp-core.so – PAPI support on top of IPP

  • in.lpd – RFC-1179 protocol listening support

  • mod_ipp.so, libipp-listener.so – IPP listening support under the Apache Web Server, Versions 1.0 and 2.0

  • BSD and SysV command implementations on top of the PAPI interface – See Modified Solaris Print Commands for a complete listing of the modified commands.

Previous Next