Middleware local desenvolvido em Node.js com Express para impressão automática de etiquetas e documentos em impressoras instaladas na máquina, diretamente a partir de sistemas web.
- Impressão silenciosa de PDFs via PDFtoPrinter
- Impressão para impressora padrão ou impressora específica
- Listagem de impressoras instaladas na máquina com status
- Logs com timestamp, nome do usuário e nome do arquivo impresso
- Serviço Windows autoinstalável para execução automática
- Rota de health check (
/
) para monitoramento rápido - Armazenamento dos PDFs impressos na pasta
labels/
com timestamp - Configuração flexível de porta via arquivo externo
- Windows 10 ou 11
- Node.js 18+ para build (não é necessário Node.js após gerar o
.exe
) - PDFtoPrinter.exe portátil
- Impressoras instaladas no Windows
C:\PrintMiddleware\
├── print-middleware.exe # Executável gerado (após build)
├── PDFtoPrinter.exe # Visualizador PDF portátil
├── print-middleware-service.exe # Wrapper de serviço (WinSW)
├── print-middleware-service.xml # Configuração do serviço
├── install.bat # Script de instalação
├── uninstall.bat # Script de desinstalação
├── print-middleware.config # Arquivo de configuração de porta (opcional)
└── labels\ # PDFs impressos
- Clone este repositório.
- Instale as dependências:
npm install
- Gere o executável:
npm run build
-
Copie os seguintes arquivos para
C:\PrintMiddleware
:build/print-middleware.exe
build/print-middleware-service.exe
build/print-middleware-service.xml
build/install.bat
build/uninstall.bat
-
Execute
install.bat
como administrador. -
Configure o usuário do serviço no
services.msc
. -
Inicie o serviço manualmente.
👉 O middleware estará disponível em http://localhost:8787
ou na porta definida no arquivo de configuração.
É possível alterar a porta do middleware sem precisar rebuildar.
Crie ou edite o arquivo print-middleware.config
na pasta C:\PrintMiddleware
com o seguinte conteúdo:
PORT=8788
Se o arquivo existir, o middleware será iniciado na porta especificada. Se não existir, usará a porta padrão 8787.
Após alterar a porta, reinicie o serviço para aplicar.
GET /
{
"status": "ok",
"message": "Print Middleware is running."
}
GET /printers
{
"printers": [
"Microsoft Print to PDF",
"Argox OS-2140",
"Brother HL-L2350DW series"
]
}
POST /print
{
"base64": "base64_do_pdf",
"userName": "usuario",
"reportName": "etiqueta_produto",
"printerName": "Argox OS-2140" // Opcional, se não informado vai na impressora padrão
}
Resposta:
{
"status": "ok"
}
- Todos os eventos de impressão são logados no console.
- Formato dos logs:
[2025-04-25 16:42:12] User "usuario" printed file "2025-04-25_16-42-12_etiqueta_produto.pdf" on printer "Argox OS-2140"
-
install.bat
:- Cria pastas necessárias
- Baixa e extrai o SumatraPDF
- Baixa o WinSW
- Instala o serviço
- Exibe instruções de configuração do serviço
-
uninstall.bat
:- Para e remove o serviço
- Mata o processo print-middleware.exe se rodando
- Remove arquivos e pastas (
labels/
,logs/
, executáveis) - Opcionalmente remove toda a pasta
C:\PrintMiddleware
MIT © 2025 - Vinicius Colodetti