Imprimindo Via SDK¶
Através do SDK é possível solicitar ao terminal o uso e impressão de informações através de String ou conteúdo no formato de Base64 de um bitmap.
Para isso, é fornecida a biblioteca payments-api-x.x.x.x.aar, que contém as funções necessárias para tal aplicações.
Fluxo¶

| Passos | Sucesso | Erro |
|---|---|---|
| 1. Solicitação de impressão | A impressão foi realizada. | A impressão não foi realizada e a razão para isto está contida na resposta. |
| 2. Resposta da solicitação de impressão | Uma vez impresso, não há informações adicionais a respeito da impressão. | A resposta contém informações do problema que impediu a impressão. |
Permissões¶
Para utilizar as funcionalidades dispostas na implementação faz-se necessário incluir a permissão abaixo.
<uses-permission android:name="br.com.android.payments.print.provider.READ_PERMISSION" />
Métodos¶
| Assinatura | Descrição |
|---|---|
void printFromString(Context context, String stringContent, PaymentCallback callback) |
Solicita a impressão de uma de um texto comum a partir de uma String. |
void printFromBase64(Context context, String base64Content, PaymentCallback callback) |
Solicita a impressão de uma imagem a partir de um Base64 enviado através de uma String. |
printFromString()¶
Quando há a necessidade de imprimir um conteúdo no formato textual, o método printFromString() pode ser utilizado.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
context |
Context |
Sim | O contexto da aplicação que solicita o uso da função de impressão. |
stringContent |
String |
Sim | O conteúdo no formato de string a ser impresso. |
printFeed |
Boolean |
Sim | Caso o parâmetro for igual a true, ao final da impressão do comprovante terá um espaçamento. Caso for false, não terá espaçamento ao final da impressão do comprovante |
callback |
PaymentCallback |
Sim | Interface que será executada para notificações de sucesso ou erro do processo de estorno. |
Ao imprimir uma string não há um limite de caracteres por linha, pois o terminal se ajusta automaticamente ao conteúdo. Contudo, não é recomendado incluir uma grande quantidade de caracteres sem realizar quebras de linha.
Warning
Quando há uma grande sequência de caracteres seguidos sem quebra de linha, a impressão será ajustada automaticamente e uma quebra de linha será inserida a cada 500 caracteres sem espaços entre si.
printFromBase64()¶
Quando a necessidade é imprimir uma imagem, o método printFromBase64() pode ser utilizado. Esse método requer que a imagem esteja previamente convertida para um formato Base64 válido antes de ser passada para a impressão.
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
context |
Context |
Sim | O contexto da aplicação que solicita o uso da função de impressão. |
base64Content |
String |
Sim | O conteúdo visual a ser impresso no formato Base64. |
printFeed |
Boolean |
Sim | Caso o parâmetro for igual a true, ao final da impressão do comprovante terá um espaçamento. Caso for false, não terá espaçamento ao final da impressão do comprovante |
callback |
PaymentCallback |
Sim | Interface que será executada para notificações de sucesso ou erro do processo de estorno. |
Considera-se um Base64 válido um Base64 que pode ser convertido para um dos seguintes formatos de imagem:
| 1 canal por pixel | 3 canais por pixel | 4 canais por pixel |
|---|---|---|
Imagem cujo cada pixel contém apenas 1 canal (Alpha) (ALPHA_8). |
Imagem cujo cada pixel contém 3 canais (Vermelho, Verde e Azul) (RGB_565). |
Imagem cujo cada pixel contém 4 canais (Alpha, Vermelho, Verde e Azul) (ARGB_8888 ou ARGB_4444). |
Exemplo¶
public class MyActivity extends Activity implements PaymentClient.PaymentCallback {
private static final String TAG = "impressao_comprovante";
private PaymentClient paymentClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment);
paymentClient = new PaymentClientImpl();
}
@Override
protected void onResume() {
super.onResume();
paymentClient.bind(this);
}
@Override
protected void onDestroy() {
try {
paymentClient.unbind(this);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
super.onDestroy();
}
public void printText(View view) {
String text = "Esse é um exemplo de impressão de texto.\n"
+ "Observe que após o '\n' haverá a quebra de linha no comprovante.\n"
+ "Observe também que a impressão se ajustará na quantidade de caracteres "
+ "e capacidade de impressão de caracteres em uma única linha.";
try {
paymentClient.printFromString(getApplicationContext(), text, true, this);
} catch (ClientException e) {
Log.e(TAG, "Erro ao imprimir texto", e);
}
}
public void printBase64(View view) {
String base64 = "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAARSURBVBhXY3growJEYEpGBQAkHgS13mWMCAAAAABJRU5ErkJggg==";
try {
paymentClient.printFromBase64(getApplicationContext(), base64, true, this);
} catch (ClientException e) {
Log.e(TAG, "Erro ao imprimir imagem Base64", e);
}
}
@Override
public void onError(ErrorData errorData) {
//Trate o erro recebido aqui, em observância que
Log.e(TAG, "Houve o seguinte erro: " + errorData.getResponseMessage());
}
@Override
public void onSuccess(Object o) {
Log.i(TAG, "O comprovante foi impresso com sucesso!");
}
}