aloiso junior
unread,Apr 16, 2026, 1:30:54 PM (10 days ago) Apr 16Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to NFePHP
Pessoal,
como estive olhando mais a fundo a biblioteca nfephp/sped-da, notei que
é de interesse que haja uma forma de realizar a impressão de cupons como
o de NFC-e com comandos esc/pos diretamente para impressoras térmicas em vez
de apenas gerar um pdf e o desenvolvedor dar o seu jeito de imprimir nas impressoras térmicas.
Há um esforço nesse sentido com a biblioteca nfephp/posprint, embora ela esteja
um pouco encostada é de se admirar o que foi feito lá, ela se propõe ser a solução para
impressão em impressoras térmicas de forma descomplicada, com o backend se comunicando diretamente com a impressora.
Acredito que embora honesto o conceito ele está errado, o backend não deve se comunicar diretamente com dispositivos em rede local, poderia escrever bons motivos para isso, mas sejamos mais práticos.
Há um bom tempo estou pensando em uma arquitetura para isso e para não acabar usando muitas horas desenvolvendo isso e acabar sendo descartado pelos mantedores
por considerar fora do escopo vou detalhar o que pretendo fazer.
A lib nfephp/posprint pode assumir um papel mais agnóstico e objetivo, em vez de ser a solução completa para a impressão ela se dedicar apenas a gerar o buffer, base64, etc... de esc/pos, sem se preocupar com fabricantes de impressora, vamos definir o padrão Epson largamente aceito, sendo assim o papel seria apenas de gerar os comandos esc/pos para o documento a ser impresso.
Infelizmente não podemos enviar o binário, base64 a ser gerada pelo nfephp/posprint e ter uma forma adequada de abranger diferentes conexões de impressora (USB/Rede/Compartilhada)
Bom gente aqui pode ser a parte mais polêmica mas por favor, leiam que não é uma tentativa de desvirtuar o projeto, mas dar camadas de apoio que vão aumentar significativamente a robustez.
Precisamos, trabalhar com websockets! Vejam, antes de parar de ler me dêem a chance de defender isso.
uma lib agnóstica para ser transmissor de eventos para clientes pode ser uma ferramenta admirável, com várias aplicações mas sobre impressões seria o seguinte:
1) Frontend solicita a impressão;
2) backend gera o esc/pos e transmite o evento para qualquer ouvinte interessado (Broadcast)
3) O ouvinte*** recebe o conteudo apropriado de e dispõe de recursos para encaminhar corretamente a impressão para o dispositivo.
***Ouvinte: Deve ser uma aplicação instalada em um computador ou em um printserver pois terá a capacidade de requisitar a impressão como se toda a aplicação de emissão fosse desktop.
Vejam isso resolve vários problemas sobre a impressão, vai eliminar de vez o popup no navegador para imprimir, para impressoras térmicas teremos uma impressão com mais qualidade pois não estaremos enviando uma "imagem" (PDF) para ela.
Precisariamos de duas ferramentas para isso que deveriam fazer parte do ecossistema NFEPHP
* Lib para Server de Websocket: Ela não seria apenas para impressão com a criatividade do desenvolvedor lidar com eventos assincronos da sefaz e fazer algo brilhante.
* Aplicação Nativa (Linux e Windows): Essa aplicação seria para servir como hub local para impressão, como é algo nativo tem acesso a meios adequados de impressão, lida com impressora usb, rede, compartilhada, bluetooth etc..
Linguagens de Programação para Server de websocket: Javascript/Typescript
Linguagem de Programação para Aplicativo Nativo: Rust
Vejam a intenção aqui não é criar algo para resolver um problema isolado e sim lidar com desafio de longa data do projeto.