‘cups_job_t’ {aka ‘struct cups_job_s’} has no member named ‘num_options’
时间: 2023-10-04 19:09:36 浏览: 54
非常抱歉,我的回答再次有误。确实,`cups_job_t` 结构体中没有 `num_options` 成员变量。如果您想获取打印任务的 `job-pages` 选项,您可以使用 `cupsDoRequest` 函数来执行 CUPS 的“Get-Job-Attributes”操作,并从请求结果中提取页数信息。
以下是示例代码:
```c
#include <cups/cups.h>
int main()
{
int job_id = 1234; // 代表打印任务的ID号
int num_pages = 0;
ipp_t *request;
ipp_t *response;
request = ippNewRequest(IPP_GET_JOB_ATTRIBUTES);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, IPP_JOB_ID, job_id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", NULL, "job-pages", NULL);
response = cupsDoRequest(CUPS_HTTP_DEFAULT, request, "/printers/default", 0);
if (response != NULL)
{
ipp_attribute_t *attr = ippFindAttribute(response, "job-pages", IPP_TAG_INTEGER);
if (attr != NULL)
{
num_pages = ippGetInteger(attr, 0);
}
ippDelete(response);
}
printf("Total pages: %d\n", num_pages);
return 0;
}
```
在这个示例中,我们使用 `ippNewRequest` 函数创建一个新的 IPP 请求,然后添加 `IPP_GET_JOB_ATTRIBUTES` 操作代码和 `IPP_JOB_ID` 属性。我们还添加了一个名为“requested-attributes”的属性,以请求打印任务的 `job-pages` 选项。
接下来,我们使用 `cupsDoRequest` 函数执行请求,并从响应中提取 `job-pages` 选项。如果找到该选项,我们使用 `ippGetInteger` 函数将其转换为整数。
请注意,此代码假设您已经配置了 CUPS 开发环境,并且可以在您的系统上编译和运行 C 代码。