[cups.development] How to attach a different ppd toexisting printer using CUPS API
Michael Sweet
msweet at apple.com
Fri Dec 9 12:33:03 PST 2011
Drop the ppd-name attribute if you are attaching the content of the model file.
On Dec 9, 2011, at 11:43 AM, Azuri wrote:
> I am using following code
>
> ipp_t *request; /* IPP Request */
> char uri_dev[HTTP_MAX_URI];
> http_t *http;
> http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
> request = ippNewRequest(CUPS_ADD_MODIFY_PRINTER);
> ipp_t *response_ppd;
>
> httpAssembleURIf(HTTP_URI_CODING_ALL, uri_dev, sizeof(uri_dev), "ipp", NULL,
> "localhost", 0, "/printers/%s", printerDefaultName);
> ipp_status_t status;
> ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name", NULL, printerDefaultName);
> ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "device-uri", NULL, uri_dev);
> ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "ppd-name", NULL, model);
> ippAddBoolean(request, IPP_TAG_PRINTER,"printer-is-accepting-jobs", 1);
> ippAddInteger(request, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", IPP_PRINTER_IDLE);
> /*ippDelete(cupsDoRequest(http, request, "/admin"));
> status = cupsLastError();
>
> if (status > IPP_OK_CONFLICT)
> {
> _cupsLangPrintf(stderr, "lpadmin: %s\n", cupsLastErrorString());
> }
> return;*/
>
> response_ppd = cupsDoFileRequest(http, request, "/admin/", model);
>
>
> #if 0
>
> if ((response_ppd = cupsDoRequest(http, request_ppd, "/admin/")) == NULL)
> {
> //_cupsLangPrintf(stderr, "lpadmin: %s\n", cupsLastErrorString());
> NSAlert *alert = [[[NSAlert alloc]init]autorelease];
> [alert setMessageText:[NSString stringWithFormat:@"Error occured while attaching ppd. Printer could not be added."]];
> [alert runModal];
>
> return;
> }
> else if (response_ppd->request.status.status_code > IPP_OK_CONFLICT)
> {
> //_cupsLangPrintf(stderr, "lpadmin: %s\n", cupsLastErrorString());
> NSAlert *alert = [[[NSAlert alloc]init]autorelease];
> [alert setMessageText:[NSString stringWithFormat:@"Error occured while attaching ppd. Printer could not be added."]];
> [alert runModal];
>
> ippDelete(response_ppd);
>
> return;
> }
> else
> {
> ippDelete(response_ppd);
> }
> #endif
>
>
> if (http)
> {
> httpClose(http);
> }
>
>
>
>
>
>
>> Not surprisingly, the same code you use to add the printer with a generic PPD file will work to add a different generic PPD file - the CUPS-Add-Modify-Printer operation will add a new printer or modify an existing printer...
>>
>> On Dec 9, 2011, at 11:23 AM, Azuri wrote:
>>
>>> Say I have added printer using cups API and attached generic ppd file.
>>> Now I want to attach generic2.ppd file instead of generic.ppd file for the same printer using CUPS. how do i do that. Can you please share the code snippet.
>>>
>>> Thanks,
>>> Azuri
>>> _______________________________________________
>>> cups-dev mailing list
>>> cups-dev at easysw.com
>>> http://lists.easysw.com/mailman/listinfo/cups-dev
>>
>> _________________________________________________________
>> Michael Sweet, Senior Printing System Engineer, PWG Chair
>>
>
> _______________________________________________
> cups-dev mailing list
> cups-dev at easysw.com
> http://lists.easysw.com/mailman/listinfo/cups-dev
_________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair
More information about the cups-devel
mailing list