Temos algumas caixas de janelas na rede e impressoras compartilhadas nelas.
Eu os adicionei através da interface web do CUPS, e todos eles funcionam como um encanto, nós podemos imprimir para eles por php:
exec('lp -d vasosamsung file.pdf');
Legal. Eu uso uma Printer
class, o que faz alguma validação antes que o trabalho de impressão possa começar.
A primeira coisa que eu verifico é a impressora existe:
lpstat -p vasosamsung
Se não for dito, o destino é inválido e, em seguida, sim, siga em frente. E aqui vem a parte complicada.
Se a resposta estiver inativa ou imprimindo, tudo está bem, vamos enviar o trabalho.
MAS!
O problema é que a impressora está inativa, porque na minha máquina a impressora foi adicionada à lista de impressoras, mas infelizmente está off-line. Isso é o que eu quero pegar. Mais problemas surgem.
Ok, eu posso lidar com isso, os trabalhos estão na fila, mesmo que a própria impressora esteja offline (retirada da máquina).
O problema real é que, quando removi toda a impressora do meu "Impressoras e Dispositivos" com o botão direito e remover o dispositivo, o CUPS diz, ele está ocioso. Eu reiniciei o CUPS por service cups restart
e obtive um stat:
printer vasosamsung is idle. enabled since Thu 06 Apr 2017 03:34:26 PM CEST
Não é verdade. Agora na minha máquina agora há impressora assim. O pior, se eu enviar um documento para ele, diz:
string(40) "request id is vasosamsung-71 (1 file(s))"
e o trabalho está na interface da web:
vasosamsung-71 Unknown Withheld 1933k 1 held since
Qua Abr 6 15:59:43 2017
A minha pergunta é: existe alguma maneira de obter o status da impressora phisicaly? Off-line, impressão, etc ... não do CUPS?
Se não for possível, posso conseguir de alguma forma, a impressora está na lista de dispositivos no computador de destino, pelo menos?
EDITAR
Hehe, quando eu desliguei minha máquina, a impressora está inativa também:)
Acho que isso acontece porque a impressora vasosamsung está no CUPS, e esse não é o dispositivo phiscal, agora vejo, mas minhas perguntas ainda são vivas.