Печать с использованием CUPS, когда мое приложение может закрыться?

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

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


person KPexEA    schedule 16.09.2008    source источник
comment
Кроме печати постскриптума, как вы печатаете? Вы используете libcups или утилиту командной строки?   -  person Paul de Vrieze    schedule 17.09.2008
comment
мой код генерирует файл постскриптума, а затем использует libcups для его печати. Я не использую командную строку.   -  person KPexEA    schedule 13.10.2008


Ответы (4)


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

person Paweł Hajdan    schedule 17.09.2008

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

person hendry    schedule 10.10.2008
comment
lpr сам по себе не является службой очереди печати. Это клиентская команда для отправки задания в реальную службу очереди печати. lpq сама по себе не является службой очереди печати. Это клиентская команда для отправки запроса в реальную службу очереди печати. Фактическая служба очереди печати будет lpd. Или в CUPS: cupsd. - person Kurt Pfeifle; 24.06.2010

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

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

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

person Kurt Pfeifle    schedule 11.06.2010
comment
Я вызываю функцию cupsPrintFile. - person KPexEA; 11.06.2010

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

person Community    schedule 16.09.2008