De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Arnaldo Estevão
Data de Publicação: 14 de Dezembro de 2006
Para quem tiver um aplicativo rodando em um servidor Apache, escrito em CGI/perl ou PHP, e desejar imprimir em uma impressora matricial remota de nota fiscal por exemplo, a solucão que desenvolvi pode ser usada tanto em Linux, quanto em Windows e é totalmente livre.
Importante considerar que a maquina cliente nao precisa manter nenhuma porta aberta, o sistema é capaz de atravessar firewall e roteadores sem necessidade de estabelecer uma conexão ponto a ponto, assim eu posso colocar o servidor de impressão remota em qualquer maquina de uma subrede local, atras de um roteador de adsl sem ip fixo, um adsl doméstico por exemplo.
Neste exemplo foi usado Slackware 11.0
mkdir /var/spool/webpserver chown nobody.nobody /var/spool/webpserver
Agora digite ou copie o arquivo webpserver.cgi no diretorio /var/www/cgi-bin
No nosso exemplo vamos usar uma fila chamada notafiscal
mkdir /var/spool/webpserver/notafiscal chown nobody.nobody /var/spool/webpserver/notafiscal
para imprimir um arquivo basta copiar para dentro da fila ex:
cp /etc/meuarquivo /var/spool/webpserver/notafiscal
Isso pode ser feito de dentro so PHP ou do script CGI gerando o arquivo com o conteudo a ser impresso e depois copiando para o diretorio da fila correspondente
#!/usr/bin/perl use CGI qw/:standard/; print header; $fila=param('fila'); $nfiles = 0 ; $t0 = time ; while ( ( $nfiles == 0 ) and (time - $t0 < 30) and time >= $t0 ) { @files = </var/spool/webpserver/$fila/*> ; $nfiles = $#files + 1 ; sleep 1 ; } while (</var/spool/webpserver/$fila/*>){ $file = $_; $txt=`cat $file`; print $txt ; system("rm $file") ; }
este arquivo deve ser chamado no autoexec.bat ou por um atalho no menu inciar substitua seusite.com.br pelo ip ou pelo nome do seu servidor WEB
@echo off echo Servidor de impressao mkdir c:\fila > nul: :inicio c:\fila\wget -O c:\fila\t.txt http://seusite.com.br/cgi-bin/webpserver.cgi?fila=nostafiscal find "0" c:\filat.txt if errorlevel 1 goto inicio Echo Imprimindo ----------------------------------------------------- type c:\fila\t.txt copy c:\fila\t.txt lpt1 goto inicio
Coloque este arquivo em /etc/rc.d e depois de o atributo de executável para
ele chmod +x /etc/rc.d/rc.webpserver e faça uma chamada para ele no rc.local
acrescentando a linha /etc/rc.d/rc.webpserver &
#!/usr/bin/perl while ( 1 eq 1) { print "Servidor de impressao\n"; system("wget -O /tmp/t.txt http://seusite.com.br/cgi-bin/webpserver.cgi?fila=notafiscal"); $txt = `/tmp/cat t.txt`; if (not index($txt,"0") <= 0 ) { print "Imprimindo"; print $txt ; system("cat /tmp/t.txt > /dev/lp0"); } }
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários