Impressão remota via WEB

Para quem tem um aplicativo rodando em um servidor Apache, escrito em CGI/perl ou PHP, e deseja imprimir em uma impressora matricial remota de nota fiscal por exemplo, a solução que desenvolvi pode ser usada tanto em Linux quanto em Windows e é totalmente livre.

[ Hits: 30.377 ]

Por: Arnaldo Luiz Estevao em 05/01/2007


Servidor de impressão



Faça isso no servidor web.

É importante considerar que a máquina cliente não precisa manter nenhuma porta aberta, enquanto que o servidor mantém escutando a porta 80, que normalmente já esta aberta e sendo ouvida pelo Apache. O sistema é capaz de atravessar firewalls e roteadores sem necessidade de estabelecer uma conexão ponto a ponto, assim eu posso colocar o servidor de impressão remota em qualquer máquina de uma sub-rede local atrás de um roteador de ADSL ou em IP fixo doméstico por exemplo.

Slackware 11.0:

1. Criando os diretórios necessários:

# mkdir /var/spool/webpserver
# chown nobody.nobody /var/spool/webpserver


Agora crie o arquivo webpserver.cgi no diretório /var/www/cgi-bin:

# vim /var/www/cgi-bin/webpserver.cgi

#!/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/spoll/webpserver/$fila/*> ;
    $nfiles = $#files + 1 ;
    sleep 1 ;
    }
while (</var/spoll/webpserver/$fila/*>){
   $file = $_;
   $txt=`cat $file`;
   print $txt ;
   system("rm $file") ;
}
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 do PHP ou do script CGI gerando o arquivo com o conteúdo a ser impresso e depois copiando para o diretório da fila correspondente.

OBS: Como existe tanto o Apache como Perl para Windows, este esquema pode ser aplicado tanto em um servidor baseado em Linux como em Windows, entretanto não tenho nenhuma máquina servidora com Windows, não tenho como calcular as alterações necessárias no script webpserver.cgi, que provavelmente deverá ser somente a substituição da barra / pela barra \ com a inclusão de C: na frente.

    Próxima página

Páginas do artigo
   1. Servidor de impressão
   2. webpserver.bat (cliente Windows)
   3. rc.webpserver (cliente Linux)
Outros artigos deste autor

Autenticação mútua SSL em servidores de NF-e e CT-e

Phperl, minha gambiarra para usar Perl como se fosse PHP

Instalando Slackware 11.0 em um pendrive

XML de NF-e ou CT-e ou MDF-e - Como validar usando os pacotes de esquemas do Governo

Leitura recomendada

Gerenciando redes com Perl e SNMP

Enviando notificações do Nagios para o MSN

Instalação de MRTG em ambiente Windows

Manipulação de sockets em Perl usando o IO::Socket::INET

Comparação entre Tcl e Perl

  
Comentários
[1] Comentário enviado por poleto em 06/01/2007 - 03:19h

Caro,

Interessante o script.
Vou dar a minha pequena contribuição:

A penúltima linha do script Perl não roda no windows

system("rm $file") ;

Pois faz uma chamada a um comando de sistema para remover o arquivo, sendo que no windows não existe o comando 'rm', no mesmo o comando seria 'del'.

Essa foi a linha que vi de imediato, além das que você já citou.

Abraços,
Poleto

[2] Comentário enviado por jeffersondantas em 12/04/2007 - 18:28h

BOM

[3] Comentário enviado por lipecys em 20/05/2008 - 19:42h

Ótimo artigo, foi pro favoritos.

[4] Comentário enviado por regguerreiro em 04/03/2015 - 15:27h


Ola boa tarde, estou utilizando servidor linux, banco de dados mysql e a linguagem de programação é o php, preciso fazer uma impressão direta na impressora via browser na maquina do cliente. A impressora esta na porta lpt1 e o site esta no servidor. nunca utilizei o linux e nem o slackware... poderiam me dar umas dicas/ajuda... me passem o contato via skype, facebook, whatsapp.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts