The Printer object is the main object in the IPP model. The Printer object provides the server-side support for IPP. The Printer object contains the functions that are normally associated with physical output devices. These functions include spooling, scheduling, transformation, and managing of multiple devices that are associated with the print server. Printer objects are uniquely identified by a printer-uri. They can be registered as entries in a directory for the purpose of searching and locating static information about the Printer object, such as name, context, and printer capabilities. Dynamic information, for example, the number of jobs that are queued to the printer, errors and warnings, are associated with the Printer object itself.
A Printer object can be used to represent a real or virtual device, as long as the semantics are consistent with those of a Printer object.
IPP clients implement the protocol on the client-side, providing you, or a program running on your behalf, the ability to query Printer objects for the purpose of submitting and managing print jobs. The IPP server is the part of the Printer object that implements the application semantics of the print service. Printer objects can be embedded in an output device or they can be implemented on network host that communicates with an output device.
When a job is submitted to a Printer object, the Printer object validates the attributes in the request and then creates the Job object. When you query a job status or monitor its progress, you are interacting with the Job object. If you cancel a print job, you are using the Job objects's Cancel-job operation. For more information about Job object operations, see IPP Operation Keywords.