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 IPP, BSD, LPR, SysV LP, and LPRng, 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 implementation in the Oracle Solaris OS provides both 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.