Skip to content

Repository files navigation

Servidor de Impressão — FAGUS

Aplicação desktop Windows que recebe comandos de impressão via HTTP e envia RAW para impressoras térmicas locais — etiquetas ZPL (Zebra e compatíveis) e cupons ESC/POS. Usado pelo ERP FAGUS para imprimir na rede local do cliente.

Download

Versão mais recente (executável Windows):

Baixar servidor-impressora.exe

Sem instalação. Executar direto.

Como funciona

  • Servidor Flask local escutando em 0.0.0.0:5000 por padrão.
  • Interface Tkinter para selecionar impressora, ativar/desativar servidor, ver log.
  • Duas impressoras por papel: "Impressora Etiquetas" (etiqueta ZPL) e "Impressora de Cupom" (recibo/ticket ESC/POS). O servidor é um relay RAW agnóstico ao conteúdo — a largura/layout vêm prontos do envio (Fagus); ele só roteia por papel.
  • Endpoints:
    • GET / — health check
    • GET /test — teste conexão
    • POST /receive — recebe JSON com comando ZPL (tipo: 'etiqueta_impressao') e envia pra impressora de etiqueta
    • POST /imprimir-cupom — recebe { tipo: 'cupom', dados_base64 } (bytes ESC/POS em base64) e envia RAW pra impressora de cupom
  • CORS liberado pra ser chamado pelo Fagus rodando em qualquer domínio.

Stack

  • Python 3.11
  • Flask + flask-cors (HTTP)
  • Tkinter (UI)
  • pywin32 (win32print) — envio raw pra spooler do Windows
  • pyperclip (clipboard)

Build local (desenvolvimento)

Pré-requisitos: Python 3.11 + Windows.

pip install -r requirements.txt
python servidor-impressora.py

Linux (só desenvolvimento)

Produção é Windows (pywin32). No Linux, use o shim em dev-linux/win32shim/ — simula impressoras virtuais sem alterar o código principal.

# venv sem pywin32 (Flask + flask-cors + pyperclip; Tkinter do sistema)
python3 -m venv .venv
./.venv/bin/pip install Flask flask-cors pyperclip

PYTHONPATH=dev-linux/win32shim ./.venv/bin/python servidor-impressora.py

Impressoras virtuais no combo:

  • Emulador ESC/POS (localhost:9100) — envia RAW via TCP (ex.: escpos-netprinter em :8080)
  • Arquivo (/tmp/impressora-raw) — grava cada job em .bin

O shim não entra no PyInstaller / release Windows.

Build do executável

Local:

pip install -r requirements.txt pyinstaller
pyinstaller servidor-impressora.spec
# saída: dist/servidor-impressora.exe

Automático: workflow .github/workflows/release.yml roda em windows-latest e publica o .exe como GitHub Release.

Publicar nova versão

git tag v1.2.3
git push origin v1.2.3

Action builda e cria a Release. URL latest/download/servidor-impressora.exe sempre aponta pra última.

Integração com FAGUS

Fagus envia ZPL pra /receive (etiquetas) e ESC/POS em base64 pra /imprimir-cupom (cupom do PDV), sempre em http://<ip-local>:5000. Endereço configurável no modal de impressão de etiqueta e no badge de impressora do PDV. Botões de download apontam direto pra Release latest (servidor-impressora.exe).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages