Getnet DocsGetnet Docs

Controle a Impressora do Dispositivo

Este guia explica como interagir com o hardware físico de impressão do dispositivo utilizando o PrinterRepository. Isso permite verificar a disponibilidade de papel e imprimir tanto comprovantes padrão quanto conteúdos personalizados.

Verificando o Status do Papel

Antes de tentar qualquer trabalho de impressão, a melhor prática é verificar se a impressora possui papel. Use a função checkPaper para consultar o status do hardware.

Repositório: PrinterRepository
Função: checkPaper

Exemplo de Implementação

Retorna true se houver papel disponível, false caso contrário.

suspend fun verifyPaperAvailability() {
    val result = printerRepository.checkPaper()

    when (result) {
        is RepositoryResult.Success -> {
            val hasPaper = result.data
            if (hasPaper) {
                println("✅ Printer is ready.")
            } else {
                println("⚠️ Printer is out of paper.")
            }
        }
        is RepositoryResult.ConnectionError -> println("❌ Connection Error")
        is RepositoryResult.ProtocolError -> println("❌ Error: ${result.type}")
        else -> {}
    }
}

Imprimindo um Comprovante Padrão

O SDK fornece um método integrado para gerar e imprimir um comprovante padrão utilizando dados de um objeto Transaction. Isso é útil para gerar rapidamente recibos em conformidade sem precisar desenhar o layout manualmente.

Função: printDefaultTicket

Parâmetros:

  • context: O contexto da aplicação Android.
  • headerIcon: Uma imagem Bitmap para imprimir no topo do comprovante (ex: o logotipo do seu estabelecimento).
  • transaction: O objeto Transaction contendo os detalhes do pagamento.

Exemplo de Implementação

suspend fun printReceipt(context: Context, logo: Bitmap, transaction: Transaction) {
    val result = printerRepository.printDefaultTicket(
        context = context,
        headerIcon = logo,
        transaction = transaction
    )

    handlePrintResult(result)
}

Imprimindo Conteúdo Personalizado (Bitmaps)

Se você precisar de controle total sobre o design do comprovante (ex: adicionar cupons, códigos QR ou layouts personalizados), você pode renderizar seu conteúdo em um Bitmap e enviá-lo diretamente para a impressora.

Função: printBitmap

Parâmetros:

  • bitmap: O objeto Bitmap a ser impresso.

Exemplo de Implementação

suspend fun printCustomDesign(myCustomBitmap: Bitmap) {
    val result = printerRepository.printBitmap(
        bitmap = myCustomBitmap
    )

    handlePrintResult(result)
}

Tratando Resultados de Impressão

Ambos os métodos de impressão retornam um RepositoryResult<Boolean>.

fun handlePrintResult(result: RepositoryResult<Boolean>) {
    when (result) {
        is RepositoryResult.Success -> {
            if (result.data) {
                println("✅ Print job completed successfully.")
            } else {
                println("❌ Print job failed.")
            }
        }
        is RepositoryResult.ConnectionError -> println("❌ Connection Error")
        is RepositoryResult.ProtocolError -> println("❌ Protocol Error: ${result.type}")
        else -> {}
    }
}

Próximos Passos