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
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.