How to attach a different ppd toexisting printer using CUPS API
Azuri
azuri.shah at fmr.com
Fri Dec 9 11:43:34 PST 2011
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
>
More information about the cups-devel
mailing list