Impressão
1) Instanciando a PayOsSdkPrinter
Obtendo a instância da SDK:
private val payOsSdkPrinterInstance = PayOsSdkPrinter.instanceInterface exposta pela PayOsSdkPrinter:
interface PayOsSdkPrinter {
fun configure(context: Context)
fun getStatus(): Result<PayOsSdkPrinterStatus>
fun init(): Result<Unit>
fun start(): Result<PayOsSdkPrinterStatus>
fun setAlignMode(alignMode: Short): Result<Unit>
fun fontSet(asciiFontType: EFontTypeAscii, cFontType: EFontTypeExtCode): Result<Unit>
fun spaceSet(wordSpace: Byte, lineSpace: Byte): Result<Unit>
fun step(step: Int): Result<Unit>
fun printStr(str: String, charset: String?): Result<Unit>
fun printBitmap(bitmap: Bitmap?): Result<Unit>
fun printLine(width: Int, height: Int?): Result<Unit>
fun leftIndent(indent: Int): Result<Unit>
fun setGray(level: Int): Result<Unit>
fun setDoubleWidth(isAscDouble: Boolean, isLocalDouble: Boolean): Result<Unit>
fun setDoubleHeight(isAscDouble: Boolean, isLocalDouble: Boolean): Result<Unit>
fun setInvert(isInvert: Boolean): Result<Unit>
}1.1) Permissão
Caso vá fazer utilização da impressão, é necessário adicionar a permissão abaixo no arquivo AndroidManifest.xml.
<uses-permission android:name="com.pax.permission.PRINTER"/>1.2) Configuração
Para começar, é necessário chamar o método de configuração. O funcionamento de todos os outros métodos está atrelado à configuração, já que o context da aplicação é utilizado por todo o SDK.
É necessário que este método seja chamado apenas uma vez. Recomenda-se chamá-lo no lifecycle de onCreate da aplicação.
payOsSdkPrinterInstance.configure(applicationContext)2) Operações e valores
Sobre as operações da PayOsSdkPrinter.
2.1) getStatus(): Result<PayOsSdkPrinterStatus>
Retorna o status da impressora.
Retornos:
PayOsSdkPrinterStatus.SUCCESS- Sucesso;PayOsSdkPrinterStatus.PRINTER_IS_BUSY- A impressora está ocupada;PayOsSdkPrinterStatus.OUT_OF_PAPER- Sem papel;PayOsSdkPrinterStatus.FORMAT_PRINT_PACKET_ERROR- Erro no formato do pacote de dados de impressão;PayOsSdkPrinterStatus.PRINTER_MALFUCTION- Mau funcionamento da impressora;PayOsSdkPrinterStatus.PRINTER_OVER_HEATS- Superaquecimento da impressora;PayOsSdkPrinterStatus.PRINTER_VOLTAGE_IS_TO_LOW- A voltagem da impressora está muito baixa;PayOsSdkPrinterStatus.PRINTING_IS_UNFINISHED- Impressão não finalizada;PayOsSdkPrinterStatus.FONT_LIBRARY_NOT_INSTALLED- A impressora não possui biblioteca de fontes instalada;PayOsSdkPrinterStatus.DATA_PACKAGE_TO_LONG- Pacote de dados muito longo;PayOsSdkPrinterStatus.ERROR- Erro não identificado;PayOsSdkPrinterStatus.UNKNOWN- Status não identificado.
2.2) init(): Result<Unit>
Inicializa a impressora.
2.3) start(): Result<PayOsSdkPrinterStatus>
Inicia a impressora e imprime os dados no buffer. Deve ser chamado ao final da configuração do buffer a ser impresso. Esta é uma interface síncrona.
- Após chamar esta função, a impressora executará a tarefa de impressão e só retornará depois de concluir toda a tarefa;
- Após finalizar toda a impressão, esta função retornará o status da impressora no valor de retorno. Portanto, não é necessário verificar o status da impressora separadamente;
- Se o processo de impressão for concluído, chamar novamente esta função fará com que o comprovante seja reimpresso;
- O uso deve seguir a fórmula: número de pontos por linha = altura do caractere + espaço entre linhas. Número total de pontos = número de pontos por linha * número de linhas. O número total de pontos deve ser menor que 30.000, e a altura padrão do caractere é 24.
2.4) setAlignMode(alignMode: Short): Result<Unit>
Define o modo de alinhamento de impressão.
- 0 - alinhamento à esquerda;
- 1 - alinhamento ao centro;
- 2 - alinhamento à direita.
2.5) fontSet(asciiFontType: EFontTypeAscii, cFontType: EFontTypeExtCode): Result<Unit>
Define a fonte para impressão.
asciiFontType - EFontTypeAscii
- EFontTypeAscii.FONT_8_16:8x16 font (Base)
- EFontTypeAscii.FONT_12_24:12x24 font (Base)
- EFontTypeAscii.FONT_8_32:8x16 font (amplia verticalmente)
- EFontTypeAscii.FONT_12_48:12x24 font (amplia verticalmente)
- EFontTypeAscii.FONT_16_16:8x16 font (amplia horizontalmente)
- EFontTypeAscii.FONT_24_24:12x24 font (amplia horizontalmente)
- EFontTypeAscii.FONT_16_32:8x16 font (amplia para ambos os lados)
- EFontTypeAscii.FONT_24_48:12x24 font (amplia para ambos os lados)
fontTypeExtCode - EFontTypeExtCode font set para caracteres de código estendidos
- FONT_16_16 -16x16 font (Base)
- FONT_24_24 -24x24 font (Base)
- FONT_16_32 -16x16 font (amplia verticalmente)
- FONT_24_48 -24x24 font (amplia verticalmente)
- FONT_48_24 -16x16 font (amplia horizontalmente)
- FONT_32_32 -24x24 font (amplia horizontalmente)
- FONT_48_24 -16x16 font (amplia para ambos os lados)
- FONT_48_48 -24x24 font (amplia para ambos os lados)
2.6) spaceSet(wordSpace: Byte, lineSpace: Byte): Result<Unit>
Define espaçamento de caracteres.
- As configurações serão válidas até que sejam definidas novamente ou até que init() seja chamado;
- O espaço entre caracteres na impressão é 0 por padrão;
- O espaço entre linhas na impressão é 0 para impressoras térmicas e 2 para impressoras de agulha;
- O espaço máximo entre linhas pode ser 255;
- O espaço máximo entre caracteres pode ser 255 (para impressoras de agulha, o máximo é 60).
2.7) step(step: Int): Result<Unit>
Define espaçamento de layout de impressão.
- Se o valor do pixel for positivo, o papel avançará. Se for negativo, o papel retrocederá. Se for 0, nenhuma ação será realizada.
- Esta é uma ação única.
- Para a impressora de agulha, não haverá ação quando o valor do pixel for menor que -255 ou maior que 255.
2.8) printStr(str: String, charset: String?): Result<Unit>
- Suporta os caracteres de controle '\n' (nova linha) e '\f' (nova página);
- Se o pacote de dados de impressão for muito longo, o programa de impressão poderá sofrer overflow;
- Se a string for maior que a largura da linha atual, a mudança de linha será automática e a impressão continuará;
- O tamanho máximo do buffer é 2048 bytes;
- Armazena str no buffer de impressão e imprime os dados do buffer em sequência após chamar start();
- Parâmetros:
- str – string a ser impressa
- charset – quando o conjunto de caracteres for NULL, o padrão será UTF-8.
2.9) printBitmap(bitmap: Bitmap?): Result<Unit>
Imprime uma imagem criada como Bitmap.
2.10) printLine(width: Int, height: Int?): Result<Unit>
Imprime uma linha (como Bitmap) com a largura e altura definidos. A altura padrão é 2.
2.11) leftIndent(indent: Int): Result<Unit>
Define o limite esquerdo de impressão de caracteres. O valor padrão é 0. Se o valor informado exceder o máximo permitido, o valor máximo será utilizado.
Parâmetros:
- indent – 0~300 pontos vazios no limite esquerdo, faixa permitida: 0 a 300.
2.12) setGray(level: Int): Result<Unit>
Define o nível de tonalidade (gray level) da impressão.
Parâmetros:
- 0 – Reservado;
- 1 – Nível padrão, impressão normal;
- 2 – Reservado;
- 3 – Impressão térmica em duas camadas;
- 4 – Impressão térmica em duas camadas, nível de cinza mais alto que o nível 3;
- [50 ~ 500] – O nível de cinza é definido como uma porcentagem do valor padrão.
- Se for 50, o nível será ajustado para 50% do padrão;
- Se for 500, o nível será ajustado para 500% do padrão.
2.13) setDoubleWidth(isAscDouble: Boolean, isLocalDouble: Boolean): Result<Unit>
Define a fonte de impressão com base na fonte padrão para largura dupla.
Parâmetros:
- isAscDouble – Define se a fonte de codificação simples (ASCII) terá largura dupla;
- isLocalDouble – Define se a fonte de codificação múltipla (caracteres locais) terá largura dupla.
2.14) setDoubleHeight(isAscDouble: Boolean, isLocalDouble: Boolean): Result<Unit>
Define a fonte de impressão com base na fonte padrão para altura dupla.
Parâmetros:
- isAscDouble – Define se a fonte de codificação simples (ASCII) terá altura dupla;
- isLocalDouble – Define se a fonte de codificação múltipla (caracteres locais) terá altura dupla.
2.15) setInvert(isInvert: Boolean): Result<Unit>
Inverte a configuração de impressão da impressora, sendo normal o padrão.
Parâmetros:
- true – Invertido;
- false – Normal.
Exemplo
payOsSdkPrinterInstance.init()
payOsSdkPrinterInstance.setGray(3)
payOsSdkPrinterInstance.fontSet(
EFontTypeAscii.FONT_12_24,
EFontTypeExtCode.FONT_16_16
)
payOsSdkPrinterInstance.printStr("Printing test", "utf-8")
payOsSdkPrinterInstance.printStr("second line", "utf-8")
payOsSdkPrinterInstance.printLine(100, 4)
payOsSdkPrinterInstance.printStr("Testing", "utf-8")
payOsSdkPrinterInstance.step(150)
payOsSdkPrinterInstance.start()Updated 6 months ago