Executando verificação de segurança...
15

Criei um simulador de impressora Zebra com Node.js para nunca mais desperdiçar uma etiqueta

Quem aqui já precisou integrar alguma aplicação com impressoras Zebra e sentiu a dor de gastar dezenas de etiquetas e rolos de ribbon só pra testar um código ZPL?

Para resolver esse problema (e salvar umas árvores no processo), eu criei o Zebra Printer Simulator, um projeto open-source que simula uma impressora Zebra localmente, com direito a renderização em tempo real via WebSockets.

O repositório está aqui: https://github.com/felprangel/zebra-printer-simulator

Qual é a mágica?

A ideia é simples: você sobe um servidor web na sua máquina que se comporta como uma impressora de rede. A partir daí, pode enviar comandos ZPL de duas formas:

  1. Pela Interface Web: Cole seu ZPL e veja o resultado na hora.
  2. Via POST (o mais legal): Envie o código ZPL direto do seu terminal com curl (ou de qualquer outra aplicação) e a etiqueta renderizada aparece instantaneamente na interface web, como num passe de mágica.

Dá uma olhada no print:

2025-09-11-103621_hyprshot

Isso é extremamente útil para depurar o ZPL que sua aplicação está gerando, sem precisar de uma impressora física do lado. Todos os clientes conectados na página veem a atualização ao mesmo tempo!

Como funciona?

O backend recebe o ZPL, envia para a API pública do Labelary (que faz um trabalho incrível renderizando ZPL) para gerar a imagem da etiqueta, e em seguida, dispara um evento via Socket.IO para todos os clientes web conectados, atualizando a imagem em tempo real.

A stack utilizada foi:

  • Backend: Node.js + Express + TypeScript
  • Real-time: Socket.IO
  • Containerização: Docker e Docker Compose

Como testar? É moleza!

A forma mais fácil de rodar o projeto é com Docker. Você não precisa nem ter Node.js instalado.

  1. Clone o repositório:

    git clone https://github.com/felprangel/zebra-printer-simulator.git
    cd zebra-printer-simulator
    
  2. Suba o container:

    docker-compose up --build -d
    
  3. Acesse http://localhost:5001 no seu navegador.

Agora a melhor parte: abra um terminal e mande um ZPL via curl:

curl -X POST \
     --header "Content-Type: text/plain" \
     --data "^XA^CF0,60^FO50,50^FDTabNews!^FS^FO50,130^FDIsso é demais!^FS^XZ" \
     http://localhost:5001/pstprnt

A etiqueta vai aparecer na tela do navegador que você deixou aberta. Simples assim!

Feedback e Contribuições

Criei esse projeto para resolver uma necessidade que eu mesmo tinha, e acredito que possa ajudar mais gente por aí. O código é aberto e está no GitHub, então sintam-se à vontade para abrir issues, sugerir melhorias ou até mesmo mandar um PR!

O que acharam da ideia? Alguém mais sofre com o desenvolvimento para ZPL? Deixem seus comentários e feedbacks aí!

Carregando publicação patrocinada...
2
1
1

Muito Legal esse simulador, é sempre bom ter soluções alternativas para trabalhar com ZPL e essa funcionalidade de enviar via curl ficou sensacional. Uma dúvida, tem algum parâmetro para definir as configurações da etiqueta? Como tamanho e dpi?

1
1

Olha meus 2 cents rsrs
Muito legal!
Não sei se chegou a pesquisar mas eles libera algo bem semelhante ao que vc está propondo no seu projeto até mais robusto para ZPL
Acredito que seu projeto veio no intuito de estudar e isso ficou muito bom, Parabéns !

link Labery Preview

1