Есть ли способ удержать задание на печать с помощью CUPS API?

Есть ли способ удержать задание на печать с помощью CUPS API? мне нужно кодировать на языке c и на машине с Ubuntu. Пример может действительно помочь.


person Mr. India    schedule 14.04.2016    source источник


Ответы (1)


см. команды оболочки lprm и cancel

Вы можете вызывать команды оболочки из c, используя system() или sh -c (Как мне выполнить встроенную команду Shell с функцией C?)

http://linux.die.net/man/1/lprm-cups https://www.cups.org/documentation.php/man-cancel.html

http://linux.die.net/man/3/system

Также см. это http://www.g-loaded.eu/2005/11/10/using-a-cups-printer-from-command-line/ (команды можно использовать с system() или sh -c )

Вы также можете использовать это, проще использовать команды оболочки: cupsCancelJob()

#include <cups/cups.h>

cups_dest_t *dest;
int job_id;

cupsCancelJob(dest->name, job_id);

Если вы хотите удалить задание (также остановить печать), используйте cupsCancelJob2()

ipp_status_t cupsCancelJob2 (
    http_t *http,
    const char *name,
    int job_id,
    int purge
);

Параметры

http Подключение к серверу или CUPS_HTTP_DEFAULT

имя Имя принтера или класса

job_id Идентификатор задания, CUPS_JOBID_CURRENT для текущего задания или CUPS_JOBID_ALL для всех заданий

очистить 1 для очистки, 0 для отмены

см. https://www.cups.org/documentation.php/doc-2.0/api-cups.html#cupsCancelDestJob

person ralf htp    schedule 14.04.2016
comment
на самом деле я должен сначала придержать задание, и после мониторинга задания администратор решит, отменить или освободить задание. Я получаю идентификатор задания с помощью API cupsGetJobs, но задание не удерживается. Как только пользователь дает команду печати, принтер включается. Надеюсь, вы понимаете, что я пытаюсь сделать. Помогите мне... - person Mr. India; 14.04.2016
comment
Команда cancel удаляет задания из очереди печати, чтобы их нельзя было перезапустить askubuntu.com/questions/350334/ - person ralf htp; 14.04.2016