MAL - Memória Auxiliar do Lutieri

quinta-feira, janeiro 17, 2008

DIRF e outros programas da RF não imprimem

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:

Testar o PostScript de uma impressora

Achei legal e util essa dica. Vou colar o conteudo da pagina aqui pois temo que um dia eu vou precisar e o conteudo nao vai mais estar disponivel no site atual.

Printserving in FreeBSD is a complicated topic. There are many different software interfaces to printers, as well as a wide variety of printer hardware interfaces. This chapter covers the basics of setting up a print queue, using Samba to print, and administering print queues and connections.

Checking PostScript Printer Capabilities

Following is a PostScript command file that can be used to get a PostScript printer to output a number of useful pieces of information that are needed to set up a Printer icon under Windows properly. It was printed from Wordpad in Win95 through the Generic/Text Only printer driver with the following instructions.

  1. Start, Run, type in Wordpad and press Enter.

  2. File, Open testps.txt.

  3. File, Page Setup, Printer, select Generic /Text Only, click Properties.

  4. Click Device Options, select TTY custom, click OK.

  5. Click OK, then set all four margins to 0; click OK.

  6. Click File, Print, OK.

This file could also have been printed with /usr/bin/lpr on a UNIX command prompt. The file prints Test Page and some printer statistics below that, as follows.

cat /home/testps.txt | lpr -oraw -P'IMPRESORA' -T'test'


% filename: testps.txt
% purpose: to verify proper host connection and function of PostScript
% printers.
/buf 10 string def
/CM {
save statusdict/product get (PostScript) anchorsearch
exch pop {length 0 eq
{1}{2}ifelse
}
{2}ifelse exch restore
}bind def
/isCM {
CM 1 ge
}bind def
/Times-BoldItalic findfont 75 scalefont setfont
150 500 moveto
(Test Page) false charpath
isCM{gsave 0.0 1.0 1.0 0.0 setcmykcolor fill grestore}if
2 setlinewidth stroke
/Times-Roman findfont 10 scalefont setfont
150 400 moveto
(Your PostScript printer is properly connected and operational.)show
150 380 moveto
(The border around the page indicates your printer's printable
region.)show
{ vmreclaim } stopped pop
vmstatus exch sub exch pop
150 360 moveto
(Max Available Printer Virtual Memory (KB):)show
150 340 moveto
dup 1024 div truncate buf cvs show
150 320 moveto
(Calculated memory size used for PostScript printer icon properties:)show
150 300 moveto
0.85 mul 1024 div truncate buf cvs show
150 280 moveto
(Printer Model: )show
statusdict begin product show end
150 260 moveto
(PostScript Level: )show
/languagelevel where
{ languagelevel 3 string cvs show pop }
{(1) show } ifelse
150 240 moveto
(PostScript Version: )show
statusdict begin
version show (.)show
revision 40 string cvs show end
clippath stroke
showpage

Marcadores:



Chat with Lutieri G. B.

Subscribe in a reader