Skip to content

PrintLayoutBuilder

PrintLayoutBuilder

PrintLayoutBuilder.PrintLayout

Classe que representa o layout de impressão, ou seja, representa uma sequência de comandos de impressão que foram previamente definidos pelo App e que definem um layout de recibo, por exemplo.

Para padronizar e otimizar o processo de impressão, o App deve criar uma instância do PrintLayout através da classe PrintLayoutBuilder, que disponibiliza um conjunto de rotinas que auxiliam nesse processo.

PrintLayoutBuilder

Classe que auxilia na formatação de um recibo de venda ou comprovante de pagamento, por exemplo.

É através dessa classe, que montamos o layout de impressão, utilizando métodos que auxiliam na definição dos itens do layout. Com o layout de impressão definido, o PrintLayoutBuilder, gera uma instância de PrintLayout, que deve ser informada no método print do SmartPrintService.

Para melhor gerenciamento e otimização da qualidade de impressão, o PrintLayoutBuilder utiliza o conceito de FontSize, que pré-define a fonte da impressão e seu tamanho.

Sendo assim, atualmente temos a seguinte definição para PrintLayoutBuilder.FontSize:
    • NORMAL – valor default, otimizado para 38 colunas
      (orientamos utilizar comprovantes com essa definição)
    • LARGE – otimizado para 44 colunas
    • SMALL – otimizado para 48 colunas

PrintLayoutBuilder.PrintLayout = PrintLayoutBuilder
 .create(applicationContext)
 .withText(RECIBO DE\nVENDA)
 .withCenterAlign("QrCode")
 .withQrCode("valor do QRCode")
 .withAutomaticLineFeed(true)
 .build() // cria uma instancia de Printlayout
Método Descrição
create(Context, FontSize) Cria uma instância do PrintLayoutBuilder, definindo o tamanho da fonte que será utilizada para impressão de conteúdo no formato texto.
withText(String) Adiciona ao layout de impressão um texto, que pode representar um recibo pré-definido, com diversas linhas, separadas por \n .

Esse é o método utilizado para adicionar ao layout, o cupom de TEF, devolvido na resposta da autorização. Esse cupom vem formatado para 38 colunas e utiliza \n como limitador de linhas.
withText(String[]) Adiciona ao layout de impressão um conjunto de linhas.

Obs.: As linhas adicionadas, devem respeitar a definição de FontSize.
withLineFeed() Adiciona um avanço de linha.
withLineFeed(int) Adiciona n avanços de linha.
withAutomaticLineFeed() Adiciona automaticamente ao final do layout, o avanço de linhas necessário para o correto corte do papel. Normalmente, é necessário 4 avanços para cortar o papel. Sendo assim, se o layout original já tiver adicionado algum avanço de linha, será adicionado apenas a quantidade necessária para possibilitar o corte, sem perda de conteúdo.
withCenterAlign(String) Adiciona uma linha, com texto centralizado.
withCenterAlign(String...) Adiciona N linhas, com texto centralizado.
withLeftAlign(String) Adiciona uma linha, com texto alinhado a esquerda.
withLeftAlign(String...) Adiciona N linhas, com texto alinhado a esquerda.
withRightAling(String) Adiciona uma linha, com texto centralizado a direta.
withRightAling(String...) Adiciona N linhas, com texto alinhado a direita.
withQrCode(String) Adiciona um QrCode ao layout de impressão. O QrCode, será adicionado de forma centralizada.
withQrCode(String, boolean) Adiciona um QrCode ao layout de impressão.

Obs.: Essa rotina se destina a parceiros que já estão integrados com o DTEFMobile e querem otimizar seu processo de impressão. Na solução anterior, era necessário enviar um QrCode codificado em Base64. Se você deseja enviar o mesmo buffer, deve informar valor true, no parâmetro encode. Com isso, será inferido o comportamento legado ao processamento do QrCode.
withBarcode128(String) Adiciona um barcode 128 com tamanho variado, que garante a correta impressão, inclusive para barcode com 44 caracteres.
withBitmap(BitMap) Adiciona um bitmap ao layout.
withImage(byte[]) Adiciona uma imagem ao layout.

Obs.: A imagem deve ser informada como um array de byte. Fique atento ao tamanho da imagem que será enviada para impressão.
withImage(byte[], boolean) Adiciona uma imagem ao layout.

Obs.: Essa rotina se destina a parceiros que já estão integrados com o DTEFMobile e querem otimizar seu processo de impressão. Na solução anterior, era necessário enviar uma imagem codificada em Base64. Se você deseja enviar o mesmo buffer, deve informar valor true, no parâmetro encode. Com isso, será inferido o comportamento legado ao processamento da imagem.
build() Processa a definição do layout e gera uma instância de PrintLayout.