Eu tenho um aplicativo da web ruby / rails, uma ação da qual envia arquivos PDF que foram gerados pelo aplicativo para uma impressora Xerox 4127 na rede. Isso é feito através do envio e execução de vários comandos lpr (para a fila de impressão padrão, usando -s para evitar cópias em spool e -o InputSlot para identificar a bandeja). Os PDFs não podem ser combinados em um único documento / impressão, porque são enviados para diferentes bandejas, dependendo das especificações do arquivo e da cor do papel necessário. Um "ciclo" pode consistir em 15k ou mais páginas, enviadas para a impressora em lotes de 20 ou 30 até várias centenas de cada vez.
Configurei a impressora no servidor como uma fila lpd com o driver genérico pcl 6 gutenprint. A Xerox não fornece um driver Linux, mas diz que ele funcionará com o lpd / lpr. E ele faz - eu sou capaz de enviar documentos com sucesso, tanto manualmente a partir da linha de comando e através da aplicação web.
Este processo foi prototipado como um programa do Windows no Foxpro. O protótipo gera um PDF para cada página do lote e o envia como um trabalho de impressão individual. Como a impressora tem uma memória métrica, o protótipo apenas copia trabalho após trabalho para a impressora e permite que a impressora gerencie tudo, o que faz muito bem. Um lote de várias centenas de páginas / trabalhos de impressão enfileira a impressora quase imediatamente e a impressora os expulsa com pouca pausa, como se fossem parte de um documento gigante.
Minha aplicação web realmente combina páginas que são destinadas para a mesma bandeja uma após a outra em um único PDF, então eu realmente esperava que as coisas fossem mais rápidas, mas elas não são. Por uma ordem de magnitude, o processo é muito mais lento. Um "ciclo" que levaria 8 horas para ser executado no protótipo leva vários dias para passar no aplicativo da Web.
O que parece estar acontecendo é que os trabalhos de impressão não estão "descarregando" para a impressora como fazem no protótipo. Monitorando a impressora através de seus utilitários na tela, vemos apenas um trabalho de impressão aparecendo por vez. A fila de impressão no servidor parece estar aguardando para enviar cada trabalho de impressão até que a impressora retorne o aviso de que o trabalho anterior foi concluído. Como tal, em vez de tudo cuspindo constantemente como se um documento, recebemos uma página, depois uma pausa enquanto o próximo arquivo entra, depois algumas páginas, depois uma pausa, depois uma página, depois uma pausa, etc ... você tem a idéia.
A fila de impressão no servidor está realmente aguardando a impressora dizer "concluído"? Em caso afirmativo, existe alguma maneira de eu configurá-lo apenas para enviar, enviar, enviar e não esperar por comunicações de volta da impressora?
Duas notas: o servidor está em outro prédio, mas fizemos alguns testes com uma máquina na mesma sub-rede da impressora e não observamos nenhuma melhoria mensurável, ou seja, não parece estar relacionada à rede. Da mesma forma, estou ciente de que o lpr está convertendo os documentos PDF para postscript antes de enviá-los, então eu os pré-convertei e testei o processo sem isso. Algumas melhorias no processo de enfileiramento no servidor, não muito significativas, mas sem impacto no fato de que apenas um trabalho está indo para a impressora por vez, o que acredito ser o problema raiz.