# Imprima um recibo

Este guia mostra como imprimir o seu próprio conteúdo — recibos complementares, cupons e similares — na impressora do terminal com `printBitmap`.

## Como funciona

Você envia um `Bitmap` para a impressora e recebe atualizações de status por um callback. Isso vale para as impressões que o seu aplicativo comanda, fora dos recibos de venda automáticos do SDK.

## Antes de começar

O SDK precisa ter concluído o warm-up com `WarmUpStatus.Success`, e a impressora do terminal precisa estar disponível.

## Imprima um bitmap

```kotlin
ApoloSdk.getClient().printBitmap(bitmap) { status ->
    when (status) {
        GetPrinterUseCaseState.OnIdle,
        GetPrinterUseCaseState.OnPrinting -> { /* printing in progress */ }
        GetPrinterUseCaseState.OnSuccess -> { /* print completed */ }
        is GetPrinterUseCaseState.OnError -> { /* status identifies the cause */ }
    }
}
```

## Status da impressora

O callback informa cada transição:

| Estado | Significado |
| :--- | :--- |
| `OnIdle` | Preparação inicial da impressão. |
| `OnPrinting` | Impressão em andamento. |
| `OnSuccess` | Impressão concluída com sucesso. |
| `OnError(status)` | A impressão falhou. `status` é um `PosDigitalPrinterStatusEnum`, como `NO_PAPER`, `PAPER_JAM`, `OVERHEAT` ou `LIFT_HEAD`. |

## Boas práticas

* Prepare o `Bitmap` em uma resolução compatível com a impressora do terminal. Imagens grandes demais ou com pouco contraste pioram o resultado.
* Aguarde `OnSuccess` ou `OnError` antes de iniciar outra impressão.

## Próximos passos

* [Referência do resultado da transação](/pt/getnet-toolbox/sdk-white-label/reference-sdk/transaction-result) — códigos de resultado e campos de payload.