Temos 2 HP LaserJet 400 M401dne conectados à rede e precisamos deles para imprimir PDFs de faturas diretamente da linha de comando do servidor.
Adicionei as impressoras ao CUPS e criei uma classe de impressão (faturas) que contém essas duas impressoras.
Então eu configurei um cron job, que verifica um diretório para arquivos de fatura e os envia para impressão quando encontrar algum, então move os arquivos para longe.
lpr -P faturas -# 4 {lista de arquivos pdf}
Parece, no entanto, que sempre que há mais de 4-5 faturas para imprimir ao mesmo tempo, algo acontece - a impressora não responde ao cups e o trabalho do cups fica na fila para sempre, não imprimindo e não cancelando a impressão.
A impressora, entretanto, ainda aceita impressões do sistema de impressão do Windows, que o utiliza em paralelo.
O que parece funcionar é cancelar todos os trabalhos de impressão em cups, fazer o ciclo de hardware da impressora e fazer cupsdisable/cupsenable (não tenho certeza se o último é necessário).
No entanto, deve haver alguma solução para que o CUPS não envie trabalhos para a impressora antes de estar pronto para aceitá-los.
Qual poderia ser o problema?
Talvez eu precise selecionar um protocolo de impressão diferente? No momento, uso o que a página de administração do CUPS sugeriu:
dnssd://HP%20LaserJet%20400%20M401dn%20(636536)._ipp._tcp.local/?uuid=564e4835-5030-3038-3636-c8cbb8636536
Mas talvez eu deva usar IPP ou outro protocolo? Em caso afirmativo, como posso descobrir o nome da fila IPP para a impressora HP?
Ou talvez eu deva usar um driver de impressora diferente em vez de: HP LaserJet 400 M401dne Postscript (recomendado)?
UPD: lpstat - v saída:
device for invoices: ///dev/null
device for default: ///dev/null
device for HP_LJ_PRO_400_1: dnssd://HP%20LaserJet%20400%20M401dn%20(072E87)._ipp._tcp.local/?uuid=564e4633-4430-3134-3232-6c3be5072e87
device for HP_LJ_PRO_400_2: dnssd://HP%20LaserJet%20400%20M401dn%20(636536)._ipp._tcp.local/?uuid=564e4835-5030-3038-3636-c8cbb8636536
device for HP_HP_LaserJet_P2055dn: dnssd://HP%20LaserJet%20P2055dn%20%5B0E39EF%5D._pdl-datastream._tcp.local/
device for Ricoh_1515: lpd://192.168.100.33/lp
Eu recomendo usar a impressão de soquete na porta 9100:
Configuração fácil:
Até agora, parece que a melhor opção é usar ipp://printer-ip/ para adicionar essa impressora específica.
O uso de um driver HP LJ PCL6 genérico (PCL5 foi recomendado em algum lugar na rede como o melhor driver para imprimir PDFs em impressoras HP) gerou o problema da impressora não aceitar o parâmetro de cópia (parâmetro lpr -#), então voltei para o Postscript recomendado pelo CUPS motorista para aqueles.
Ao usar a interface socket://, ainda havia alguns problemas com os trabalhos de impressão que não aceitavam mais trabalhos e eles ficavam na fila com o status "Conectando à impressora", e o servidor cups precisava ser reiniciado manualmente para que isso desaparecesse.
Depois de mudar para ipp isso não aconteceu.