| Title | CUPS implementation of the Open Printing API |
|---|---|
| Student | Cherif YAYA |
| Mentor | Norm Jacobs |
| Abstract | |
|
The Open Printing API (PAPI) is a service and protocol independent application programming interface that allows programmers to interact with print systems. The goal of the project is to write an implementation of the PAPI for the CUPS printing system. Currently application programmers can use PAPI to access CUPS fonctionnalities through the existing IPP based implementation of the API. However, the focus of this project will be to provide an implementation that uses as many CUPS native building blocks as possible . CUPS is a very popular printing system and it's used by the majority of Linux distributions. Having a PAPI interface readily available from CUPS packages will certainly prove to be very valuable to the community and hopefully foster the use of the PAPI among Linux applications.
Version 1.0 of the Open Printing API specifies 4 main subAPIs : the Attribute API, the Service API, the Printer API and the Job API. For implementing the Attribute API I intend to leverage the existing implementation which is available under the libpapi-common folder of the repository. The 3 remaining APIs, however, will be implemented using API calls from libcups. For instance the papiPrintersList() function of the Printer API can be implemented using the cupsGetDests() function whereas the papiJobCancel() function of the Job API will use the cupsCancelJob() function. Also, the goal being to get this implementation integrated in CUPS, I will comply with CUPS' coding guidelines which are outlined on their website (see http://www.cups.org/documentation.php/spec-cmp.html). Finally, a particular attention will be given to the testing. Test cases will be written for each interface in accordance to the CUPS Software Test Plan (see http://www.cups.org/documentation.php/spec-stp.html). Deliverable : an implementation of the PAPI for the CUPS printing system |
|