Печать с использованием CUPS, когда мое приложение может выйти? - PullRequest
2 голосов
/ 17 сентября 2008

У меня есть приложение linux, которое использует чашки для печати, но я заметил, что если я печатаю, а затем сразу же завершаю работу, моя распечатка никогда не появляется. Поэтому я предполагаю, что мое приложение должно ждать, пока оно действительно выйдет из принтера, прежде чем выйти, поэтому кто-нибудь знает, как определить, когда оно закончило печать ??

Я использую libcups для печати файла postscript, который генерирует мое приложение. Поэтому я использую команду для печати файла, а затем он возвращается обратно в мое приложение. Так что мое приложение думает, что документ отправляется в очередь на принтер, когда, я думаю, он еще не попал туда. Поэтому вместо того, чтобы всем моим пользователям приходилось искать на экране значок принтера в системном трее, я бы предпочел найти решение в коде, поэтому, если они попытаются выйти из системы до того, как оно действительно будет отправлено, я могу предупредить их об этом. , Кроме того, файл, который я генерирую, является временным файлом, поэтому было бы неплохо узнать, когда он закончится, чтобы я мог удалить его.

Ответы [ 4 ]

1 голос
/ 11 июня 2010

Вам, конечно, не нужно ждать, пока бумага не выйдет из принтера. Однако вам нужно подождать, пока ваш временный файл полностью не будет получен cupsd в области буферизации (обычно /var/spool/cups/).

Если вы печатаете в командной строке (используя одну из команд CUPS lp или lpr), вы узнаете, что задание выполняется, если запрос оболочки вернется (команда даже сообщит идентификатор задания CUPS для задания отправлено), и если код выхода ($?) равен 0.

Вы не указываете, какую часть libcups и какой вызов функции вы используете для достижения желаемого. Если бы мне пришлось это сделать, я бы использовал функцию IPP cupsSendRequest, а затем cupsGetResponse, чтобы узнать результат.

1 голос
/ 17 сентября 2008

Как только ваш веб-интерфейс CUPS (localhost: 631) или что-то еще, чтобы посмотреть, что CUPS видит, показывает, что CUPS получил работу, вы можете выйти из приложения.

1 голос
/ 10 октября 2008

Как насчет использования службы катушки печати, например lpr & lpq?

0 голосов
/ 17 сентября 2008

Вероятно, ваше приложение еще не завершило печать, когда вы его закрывали. Если вы используете evince для печати PDF или другого документа, это известная ошибка - нет визуального подтверждения того, что операция печати выполняется. Если задание на печать отправлено, в системном трее появится значок принтера, пока фактическая печать не будет завершена. Вы можете щелкнуть значок принтера на панели задач и посмотреть, какие задания выполняются и ожидают в данный момент.

...