110 lines
2.6 KiB
Markdown
110 lines
2.6 KiB
Markdown
# 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": "<div class='text-xl font-bold'>Minha Etiqueta</div>...",
|
|
"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;
|
|
}
|
|
```
|