3.0 KiB
3.0 KiB
Documentação da API de Impressão
Esta API permite listar impressoras disponíveis no servidor (Windows) e enviar comandos de impressão de texto simples ou layouts HTML (etiquetas).
URL Base: http://localhost:3000
Swagger UI: http://localhost:3000/api
Endpoints
1. Listar Impressoras
Retorna a lista de impressoras instaladas no servidor onde a API está rodando.
- Método:
GET - Rota:
/printer/list - Exemplo de Resposta:
[
{
"name": "POS-80",
"portName": "USB001",
"driverName": "Generic / Text Only",
"printerStatus": 0,
"deviceId": "POS-80"
},
{
"name": "Microsoft Print to PDF",
"portName": "PORTPROMPT:",
"driverName": "Microsoft Print To PDF",
"printerStatus": 0
}
]
2. Imprimir HTML (Etiquetas/Layouts)
Converte um código HTML (com suporte a Tailwind CSS) para PDF e imprime na impressora selecionada via Fila de Processamento (BullMQ).
- Método:
POST - Rota:
/printer/print-htmlou/printer/:printerName/print-html - Corpo da Requisição (JSON):
{
"html": "<div class='text-xl font-bold'>Minha Etiqueta</div>...",
"printerName": "POS-80", // Opcional se passado na URL
"width": "60mm", // Opcional. Largura do papel/etiqueta. Default: 80mm
"height": "40mm", // Opcional. Altura da etiqueta. Default: auto
"jobId": "meu-id-unico-123" // Opcional. ID para idempotência na fila.
}
- Detalhes:
- O backend injeta automaticamente o script do Tailwind CSS.
- O HTML é renderizado via Puppeteer (Chrome headless).
- Tarefas são processadas de forma assíncrona via Redis/BullMQ.
3. Imprimir Texto Simples (ESC/POS)
Envia comandos de texto diretamente para a impressora. Ideal para cupons simples e rápidos.
- Método:
POST - Rota:
/printer/printou/printer/:printerName/print - Corpo da Requisição (JSON):
{
"lines": [
"--------------------------------",
" CUPOM FISCAL ",
"--------------------------------",
"Item 1 ................. R$ 10,00"
],
"alignment": "center", // "left", "center", "right". Default: left
"upsideDown": false, // Se true, imprime de cabeça para baixo
"printerInterface": "POS-80" // Opcional se passado na URL. Suporta "tcp://192.168.1.100" ou nome da impressora.
}
Tipos (TypeScript Interfaces)
Se estiver usando TypeScript no Frontend, utilize estas interfaces:
export interface Printer {
name: string;
portName?: string;
driverName?: string;
printerStatus?: number;
deviceId?: string;
}
export interface PrintHtmlPayload {
html: string;
printerName: string;
width?: string;
height?: string;
jobId?: string;
}
export interface PrintTextPayload {
lines: string[];
alignment?: 'left' | 'center' | 'right';
upsideDown?: boolean;
printerInterface?: string;
}
Swagger
A documentação interativa completa (OpenAPI) está disponível em /api. Lá você pode testar todos os endpoints e ver os esquemas detalhados de cada DTO.