2008-09-16 7 views
2

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

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

+0

Помимо печати postscript, как вы печатаете? Используете ли вы libcups или используете командную строку? –

+0

мой код генерирует файл постскриптума, а затем использует libcups для его печати. Я не использую командную строку. – KPexEA

ответ

0

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

1

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

1

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

+0

'lpr' сам по себе не является сервисом печати. Это команда клиента для отправки задания в реальную службу печати. 'lpq' сам по себе не является сервисом печати. Это клиентская команда для отправки запроса в реальную службу печати. Фактической службой печати для буферов будет 'lpd'. Или в CUPS: 'cupsd'. –

1

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

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

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

+0

Я вызываю функцию cupsPrintFile. – KPexEA