Sistema em Nuvem impressão local

338 views
Skip to first unread message

Marco Aurelio

unread,
Apr 7, 2021, 2:16:30 PM4/7/21
to NFePHP
Caros,
Meu sistema vai ficar no google cloud, e a impressora está em uma máquina windows, numa rede local com "IP FRIO" atrás de um roteador.
Como fazer a impressão direto pra impressora?

Max Berkeuer

unread,
Apr 7, 2021, 2:30:00 PM4/7/21
to nfe...@googlegroups.com

Boa tarde

Seja bem vindo ao mais infame desafio de todo programador web.

Então, existem mais uma uma forma de mandar essa impressão de forma direta, sem dialogo de impressão do navegador, a diante explico a solução que usei.

Criei um executável em python, que fica monitorando uma via API rest,  verificado se tem arquivo para impressão, quando tem arquivo, esse executável manda para impressora.
Dessa forma, o sistema só precisa colocar o arquivo na "fila de impressão" da api, que o arquivo vai ser enviado para a máquina do usuário na próxima consulta.
A vantagem desse formato, é que não depende de abertura de porta NAT, ou conexão vpn do host do usuário com o servidor.

Outras soluções que pensei, todos dependem desse tipo de config, o que acho que é muito crítico, visto que vai para de imprimir por qualquer alteração na rede.

Se quiser detalhes sobre o monitor, te passo o código fonte.


Se alguém tiver uma solução melhor , vou ficar feliz em aproveitar.

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/nfephp/240d5a87-1ba3-4ec9-a627-392905be1153n%40googlegroups.com.

Marco Aurelio

unread,
Apr 7, 2021, 2:36:16 PM4/7/21
to NFePHP
Opa, como que funciona esse "monitoramento", ele executa um "request" de tempos em tempos?

Roberto Machado

unread,
Apr 7, 2021, 2:38:38 PM4/7/21
to nfe...@googlegroups.com
olha o QZ.io !!

Roberto


--
Roberto
Nisi utile est quod facimus stulta est gloriae (Julius Phaedous)

Max Berkeuer

unread,
Apr 7, 2021, 3:06:02 PM4/7/21
to nfe...@googlegroups.com

Isso, ele faz esse request no meu caso, com intervalo de 3 segundos.

E sim, isso pode ser um problema, mas dentre as soluções que achei, foi a que me pareceu com menos pontos críticos.

Max Berkeuer

unread,
Apr 7, 2021, 3:08:05 PM4/7/21
to nfe...@googlegroups.com

Vale observar, que tenho um cliente usando, implementei essa solução a pouco tempo, estou monitorando pra medir o que é usado de recurso.


Em 07/04/2021 15:36, Marco Aurelio escreveu:

con...@arandaweb.com.br

unread,
Apr 8, 2021, 8:57:39 AM4/8/21
to NFePHP
A solução é interessante, mas é inviável pelo auto consumo de recursos. Use o efeito cascata na quantidade de clientes que irão ficar monitorando o serviço.
O Ideal é fazer esta impressão usando os Sockets do navegador, que vai chamar o seu app local a cada impressão efetivamente, não desperdiçando recursos de "leitura de fila de impressão" a cada x segundos.

O Zq que o Roberto indicou é um exemplo. Nada impede de utilizar a mesma estrutura em outros moldes, como uso aqui com o Delphi ou com o próprio  Python  que o colega comentou. A questão aqui não é "o que ser feito" e sim o "como ser feito", para evitar gargalos futuros.

Max Berkeuer

unread,
Apr 8, 2021, 12:48:33 PM4/8/21
to nfe...@googlegroups.com

Boa tarde

Concordo que a solução aplicada em escala, vai ferrar com o server.

Pode explicar mais como aconteceria essa comunicação do socket do navegador com o aplicativo local? Isso seria acionado via javascript?

Roberto Machado

unread,
Apr 8, 2021, 3:13:52 PM4/8/21
to nfe...@googlegroups.com
A exemplo do QZ.io, deve existir um processo no servidor que usa o javascript para passar os dados via página web para um processo local (desktop) rodando em JAVA (pode ser um socket em qq outra linguagem PYTHON, DELFI, C++, NODE), que recebe os dados e encaminha para a impressora.

Apenas um processo LOCAL (desktop) tem acesso a impressoras.

Eu menciono o QZ.io pois ele tem um projeto aberto disponível no github qztray conhecendo JAVA dá para adaptar esse projeto para o seu uso com vantagens.

Roberto

Uilasmar Guedes Amaral

unread,
Apr 8, 2021, 4:50:37 PM4/8/21
to nfe...@googlegroups.com
Eu utilizo electronjs, rodado o mesmo código que está sendo utilizado na web, apenas tem .exe de instalação, com ele consigo tanto fazer a impressão como utilizar o certificado A3. 

--

con...@arandaweb.com.br

unread,
Apr 9, 2021, 5:52:30 AM4/9/21
to NFePHP
É basicamente o que o Roberto disse ali.
Tenho um serviço local desenvolvido em Delphi que faz toda a integração com impressoras, certificados a3, balanças, terminais, etc.. etc.. etc..

No meu sistema web, faço todas as devidas configurações e ao finalizar uma nota, envio via JS para esse monitor os dados que quero e ele faz o processamento. A vantagem é que fica tudo transparente, sem interação do usuário para escolha da impressora, por exemplo.

Como mencionado pelo Roberto, usa a versão do Qz para ver as funcionalidades e facilidades que vai te dar um baita norte.

Eugenio Carmo EcoDes

unread,
Apr 9, 2021, 8:53:57 AM4/9/21
to nfe...@googlegroups.com
Bom dia a todos.

Vou compartilhar com vocês o que fiz aqui:

Somos uma industria e além de impressoras temos balanças, etiquetadoras, etc..

O sistema que roda externo quando tem que ler uma balança ou imprimir em um dispositivo, grava um TXT em uma pasta específica, este texto indica a operação e o dispositivo.

Para fazer a ponte do ambiente externo e o interno colocamos uma máquina linux com php_cli, que executa um processo que acessa os dispositivos nas estações da rede por compartilhamento simples. Esta mesma máquina le o TXT externo realiza a operação e retorna via POST a confirmação ou msg de erro para o sistema.

O trabalho maior foi fixar o IP de LAN de todos os recursos e criar uma interface para cadastro e controle destes.

Fiz desta forma por usar PHP que é minha linguagem, mas é bem semelhante ao modelo descrito pelo Roberto.

Estou as ordens caso alguém mande mais informações sobre.


Eugênio Geraldo do Carmo
31 98308-0403


Message has been deleted

uilhianet

unread,
Apr 9, 2021, 9:09:27 AM4/9/21
to NFePHP
Eu fiz da seguinte maneira, minha aplicação roda com um api REST feita em php, minha aplicação web é um app feito com vue js, portanto eu não misturo php com html, com isso tive a possibilidade de pegar essa aplicação web e colocar ela para rodar com electronjs, ela é o mesmo site, só que quando o cliente estiver executando com ela, ao solicitar a impressão eu utilizo o nodejs que roda no electron para fazer isso atraves do IPC do electron. Tanto para impressão quanto para assinar e transmitir a nota quando for certificado A3. A unica desvantagem é que o cliente vai ter que baixar e instalar a aplicação feita com electronjs, e a maior vantagem é que não preciso colocar mais nada para rodar em meu servidor.

Eduardo Miranda

unread,
Apr 9, 2021, 10:15:59 AM4/9/21
to NFePHP
uma opção mais barata que o qz.io, mas com os mesmos resultados, implementei em meu sistema e funciona perfeitamente

Roberto Machado

unread,
Apr 9, 2021, 11:09:37 AM4/9/21
to nfe...@googlegroups.com
O QZ.io tem uma versão ABERTA (open source) que não é paga !!

Mas tem que conhecer JAVA !!

Roberto

Leandro Alfredo

unread,
Apr 15, 2021, 9:47:21 AM4/15/21
to NFePHP
Eu tenho a versão compilada com certificado válido até 2050. Quem tiver interesse só enviar zap 35 9 9193-5383
Reply all
Reply to author
Forward
0 new messages