# 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:** ```json [ { "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. Ideal para etiquetas. - **Método:** `POST` - **Rota:** `/printer/print-html` - **Corpo da Requisição (JSON):** ```json { "html": "
Minha Etiqueta
...", "printerName": "POS-80", // Nome exato da impressora (conforme retornado na listagem) "width": "60mm", // Opcional. Largura do papel/etiqueta. Default: 80mm "height": "40mm" // Opcional. Altura da etiqueta. Default: auto } ``` - **Detalhes:** - O backend injeta automaticamente o script do Tailwind CSS. - O HTML é renderizado via Puppeteer (Chrome headless). --- ### 3. Imprimir Texto Simples (ESC/POS) Envia comandos de texto diretamente para a impressora. Ideal para cupons simples e rápidos, sem formatação complexa. - **Método:** `POST` - **Rota:** `/printer/print` - **Corpo da Requisição (JSON):** ```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" // Pode ser nome da impressora (USB) ou "tcp://192.168.1.100" (Rede) } ``` ## Tipos (TypeScript Interfaces) Se estiver usando TypeScript no Frontend, utilize estas interfaces: ```typescript export interface Printer { name: string; portName?: string; driverName?: string; printerStatus?: number; deviceId?: string; } export interface PrintHtmlPayload { html: string; printerName: string; width?: string; height?: string; } export interface PrintTextPayload { lines: string[]; alignment?: 'left' | 'center' | 'right'; upsideDown?: boolean; printerInterface?: string; } ```