---
title: "Impressão"
url: "https://devcenter.stone.com.br/sdk-android-impressao-deeplink"
image: "https://devcenter.stone.com.br/_og/d/c_Ocean.takumi,title_~SW1wcmVzc8Ojbw,props_eyJ0aGVtZSI6eyJtb2RlIjoibGlnaHQiLCJjb2xvcnMiOnsicHJpbWFyeSI6IiMzMEE2NkQifX19,p_Ii9zZGstYW5kcm9pZC1pbXByZXNzYW8tZGVlcGxpbmsi,s_WkXDOSf9ccMd8X3u.png"
---

# Impressão

Será disponibilizado a partir bundle 7.7.0

Encontramos um bug nas versões anteriores que faz com que o conteudo não seja impresso. Esse problema foi corrigido no bundle 7.7.0 e estamos trabalhando para liberar essa versão.

## [Enviar uma impressão customizada](#enviar-uma-impressão-customizada)

Para conseguir imprimir, é importante que tenha o formato das imagens em Base64 e o conteúdo que gostaria de imprimir em formato JSON.

Pode ser impresso textos simples (chamado de `line`), imagens (chamado de `image`) e textos customizados (chamado de `text`, com alinhamento e tamanho). Podem imprimir apenas imagens, apenas textos simples, apenas textos customizados ou tudo junto! Depende apenas da estrutura que montará no arquivo JSON.

Com essas informações, a criação do deeplink é via Intent.

```kotlin
val uriBuilder = Uri.Builder()
uriBuilder.authority("print")
uriBuilder.scheme("printer-app")
uriBuilder.appendQueryParameter("SHOW_FEEDBACK_SCREEN", "true/false")
uriBuilder.appendQueryParameter("SCHEME_RETURN", "deeplinktest-return")
uriBuilder.appendQueryParameter("PRINTABLE_CONTENT", "arquivoJSON")
  
val intent = Intent(Intent.ACTION_VIEW)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.data = uriBuilder.build()
startActivity(intent)
```

### [Campos utilizados para envio](#campos-utilizados-para-envio)

Todos os campos estão em formato String e são obrigatórios

| Campo                | Descrição                                                                        |
| :------------------- | :------------------------------------------------------------------------------- |
| SHOW_FEEDBACK_SCREEN | Mostrar ou não no final do fluxo a tela de sucesso ou erro                       |
| SCHEME_RETURN        | Determina para onde será o retorno do deeplink. Deve ser o mesmo valor configurado no lugar da variável scheme no AndroidManifest |
| PRINTABLE_CONTENT    | Arquivo JSON do que será impresso                                                |

### [Campos utilizados como parâmetros do arquivo JSON](#campos-utilizados-como-parâmetros-do-arquivo-json)

Exemplo de como ficaria o arquivo com todos os tipos de impressão

```json
[
  {
    "type": "text",
    "content": "texto centro grande",
    "align": "center",
    "size": "big"
  },
  {
    "type": "text",
    "content": "texto direita médio",
    "align": "right",
    "size": "medium"
  },
  {
    "type": "text",
    "content": "texto esquerda pequeno",
    "align": "left",
    "size": "small"
  },
  {
    "type": "line",
    "content": "texto sem customização"
  },
  {
    "type": "image",
    "imagePath": "iVBORw0KGgoAAAANSUhEUgAAAHcAAAAuCAAAAAA309lpAAACMklEQVRYw91YQXLDIAyUMj027Us606f6RL7lJP0Ise/bg7ERSLLdZkxnyiVGIK0AoRVh0J+0l2ZITCAmSus8tYNNv9wUl8Xn2A6XZec8tsK9lN0zEaFBCxMc0M3IoHawBAAxffLx9/frY1kkEV0/iYjC8bjjmSRuCrHjcXMoS9zD4/nqePNf10v2whrkDRjLR4t8BWPXbdyRmccDgBMZUXDiiv2DeSK4sKwWrfgIda8V/6L6blZvLMARTescAohCD7xlcsItjYXEXHn2LIESzO3mDARPYTJXwiQ/VgWFobsYGKRdRy5x6/1QuAPpKdq89MiTS1x9EBXuYJyVZd46p6ndXVwAqfwJpd4C20uLk/LsUIilQ5Q11A4tuIU8Ti4bi8oz6lNX8iD8rNUdXDm3iMs81le4pUOLOJrGatzBx1VqVRSU8qAdNRc855GwHxcFblQbYTvqx3M0ZxZnZeBq+UoayI0h3y7QPMhOyQA9JMkO9aMIqs6Rmrw73T6ey9anvDX5kbinvT2PW7yYzj8ogrcYqBOJjNxc21d5EjmH0e/iaqUV9dXj3YgYtkvCjbjaqs5O+85MxVvwTcZdhR5YuFbckCSfNkHUolTcE9Cq9iQfXtV62bo9nUBIm8AXedPidimVFIjZCdYlTw4W8RtsatKC7Bt7D4t5tMle9qPD+y4uyL81FS/UnnVu3eMzhuj3G7CqzkHF77ISsaoraSsqVnRhq3rSZ+F5Ur//b5zOOVoAwDc6szxdC+PYAAAAAABJRU5ErkJggg=="
  }
]
```

Todos os campos estão em formato String e são obrigatórios

| Campo     | Variação                                              | Descrição                        |
| :-------- | :---------------------------------------------------- | :------------------------------- |
| type      | text \| line \| image                                 | Tipo de impressão                |
| content   | Apenas para campos de texto                           | Texto que será impresso          |
| align     | center \| right \| left Apenas para texto customizado | Alinhamento do texto customizado |
| size      | big \| medium \| small Apenas para texto customizado  | Tamanho do texto customizado     |
| imagePath | Formato Base64 Apenas para imagem                     | Imagem que será impressa         |

Atenção: Travamento de Impressão

#### [Problema](#problema)

Ao enviar um intent com payload grande, a impressão trava sem erro — não retorna exceção e não continua o fluxo. Isso acontece porque o Android limita o tamanho de dados **por chamada entre apps** (~1MB por transação, compartilhado no processo). Mais detalhes: [Parcelables and Bundles](https://developer.android.com/guide/components/activities/parcelables-and-bundles#sdbp).

#### [Como evitar](#como-evitar)

Envie **uma imagem (ou poucas) por chamada, de forma sequencial e síncrona**:

1.  Envie o 1º pedaço via intent e **aguarde o retorno** da impressão.
2.  Só então envie o próximo. Repita até o fim.

## [Retorno da impressão](#retorno-da-impressão)

Para conseguir o retorno do deeplink de impressão, pode ser utilizada a função abaixo que captura a informação que foi retornada pela Intent.

```kotlin
override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        if (intent != null && intent.data != null) {
            Log.d("PrintTest", intent.data.toString())
            Toast.makeText(this, intent.data.toString(), Toast.LENGTH_LONG).show()
        }
    }
```

### [Mapear retorno da impressão](#mapear-retorno-da-impressão)

Se for preciso mapear os casos de sucesso ou erro, poderá utilizar o `intent.data` com as seguintes possibilidades.

| Resultado                  | Descrição                                                                        |
| :------------------------- | :------------------------------------------------------------------------------- |
| SUCCESS                    | Caso a impressão tenha sido efetuada com sucesso                                 |
| PRINTER_OUT_OF_PAPER       | Impressora sem papel ou com a tampa de bobina aberta                             |
| PRINTER_INIT_ERROR         | Erro ao inicializar a impressora                                                 |
| PRINTER_LOW_ENERGY         | Máquina com baixa energia                                                        |
| PRINTER_BUSY               | Impressora ocupada, ocorre quando já está imprimindo algo                        |
| PRINTER_UNSUPPORTED_FORMAT | Algum formato enviado não corresponde ao padrão de texto, imagem ou texto customizado |
| PRINTER_INVALID_DATA       | Limite máximo do buffer foi ultrapassado                                         |
| PRINTER_OVERHEATING        | Superaquecimento da impressora                                                   |
| PRINTER_PAPER_JAM          | Papel preso na caixa de bobina                                                   |
| PRINTER_PRINT_ERROR        | Erro genérico da impressora                                                      |

---

**Jornada: [Integrar por Deeplink](https://devcenter.stone.com.br/sdk-android-explicacao-deeplink)**  
Etapa 6 de 11

[**Etapa anterior**Cancelamento](https://devcenter.stone.com.br/sdk-android-cancelamento-deeplink)[**Próxima etapa**Reimpressão](https://devcenter.stone.com.br/sdk-android-reimpressao)

Siga a Stone nas redes sociais

[](https://www.facebook.com/stonepagamentos/)[](https://x.com/sejastone/)[](https://www.instagram.com/stone/)[](https://br.linkedin.com/company/stone-co)[](https://www.youtube.com/channel/UCk4L4JykgoDkN8YeuxkNqIQ)

© Stone Instituição de Pagamento S.A. CNPJ 16.501.555/0001-57

Av. Rebouças, 2880, 4º andar, Pinheiros, CEP 05.402-500 – São Paulo/SP

Instituição de pagamento autorizada pelo Banco Central do Brasil, nas modalidades de credenciadora e emissora de moeda eletrônica.