lpr: Error - stdin is empty, so no job has been sent.
Era essa a única mensagem que eu tinha nos meus logs. Horas de debug, google, testes, POG's pra chegar a conclusão de que a solução seria apenas um caracter. UM CARACTER.
Tenho o samba instalado sem suporte a cups. Pois bem, tenho que especificar vários parâmetros no smb.conf que nao seriam necessários caso esse suporte estivesse ativo. Juro que um dia eu recompilo ele :-)
Bom, a opção "print command" do samba ja me causou dor de cabeca uma vez. Meus relatórios de impressão saiam sem o título do documento. E uma vez que eu usava o pykota esse dado era realmente necessário. Depois de ter debugado em nível 6 o samba descobri como consertar para que aparecesse o título.
Hoje me ligaram avisando que um programa da Receita da Fazendo(feito em Delphi provavelmente) não estava imprimindo. Simplesmente não aparecia o job na fila da impressora.
Mesmo em nível de log 1 encontrei a mensagem a qual me referi no inicio do post. Mas, debugando em nível 6 encontrei a seguinte linha:
Running the command `lpr -l -P'IMPRESSORA' -T'' smbprn.00000357.3LaO0c; rm smbprn.00000357.3LaO0c' gave 0
E acima dessa linha a mensagem que inicia o post. Prestem atenção que o parâmetro que vai o título do documento esta vazio.(-T''). Rodei esse mesmo comando a partir do shell e vi que o lpr ficava esperando entrada de dados. Algo estava estranho. Rodei o mesmo comando dessa forma:
cd /var/spool/samba
lpr -l -P'IMPRESSORA' -T'lalalala' smbprn.00000357.3LaO0c
Não e que funcionou?!!? Pena que estou postando agora(19:37) e comecei as 9 da manhã a investigar esse problema.
Logo, o tal software da RF não envia o título do documento, logo o lpr ficava esperando dados do stdin, logo não haviam dados no stdin, logo aparecia a mensagem do inicio do post.
Solução:
Adicionar um espaço, ponto, qualquer caracter ao "print command" no smb.conf.
Versão problemática:
print command = lpr -l -P'%p' -T'%J' %s; rm %s
Versão corrigida e funcional:
print command = lpr -l -P'%p' -T'%J ' %s; rm %s
A diferenca é sutil. Um espaco depois da variável %J.
Aliás, estava pensando agora, quando se tem o samba com suporte a CUPS tem alguns parâmentros com os quais não precisamos nos preocupar. E se eu não me engano ele trata essa questão do título estar vazio. Não tenho certeza agora, mas quando eu recompilar eu vou saber dizer.
Bom, mas a nossa história de hoje não termina por aqui. Depois que comecou a imprimir surgiu um novo problema. Existia uma imagem como marca d'água, plano de fundo, seja lá o que for. Só sei que ela devia ficar atrás do texto. Meio óbvio. Mas não era isso que estava acontecendo. Ela tapava o texto. Estava sobreposta ao texto.
Passei tanto tempo tentando achar a solução que acho que aprendi a programar em PostScript(PS). :-)
Mudei tanta coisa e nada resolvia. Logo lembrei que PS e uma linguagem que já tem uma certa idade. E acho que li em algum lugar que PCL veio pra mudar as coisas e blah blah. Pois bem, não sei porque cargas d'água eu usava um driver PS no servidor pra essa impressora. Resolvi trocar por um PCL, depois de concluir que o driver era o culpado. E, de novo, não é que funcionou?!?! :-D
Agora estou usando um driver da HP PCL 6. Aliás a impressora, se e que interessa, era uma HP LaserJet 2820.
Chega... tenho que ir pra casa :-D
Marcadores: printserver