Ir para conteúdo
  • Cadastre-se

dev botao

Script genérico para teste de impressoras ESC/POS em Linux


Recommended Posts

Olá

Gostaria de compartilhar o código de um shell script simples que montei para teste de impressão no Linux.

O script recebe 3 parâmetros (texto_titulo, texto1 e texto2)

Ele basicamente submete os seguintes comandos ESC/POS na porta da impressora (mapeada através da constante DEV_IMPRESSORA, setada com /dev/usb/lp0):

 

  • Inicializa a impressora;
  • Seleciona o codepage 850 (opção 2 multi língua)
  • Imprime o titulo centralizado em largura dupla + negrito
  • Imprime o texto1 em fonte padrão alinhado a esquerda
  • Imprime o texto2 centralizado em largura e altura dupla + negrito
  • Por fim, avança algumas linhas e corta o papel

 

O script depende do comando awk (presente em todas as distribuições) e do comando iconv (usado para converter a codificacao do texto a ser impresso de UTF-8 para CP850)

 

Espero que seja útil

Abraços,

Paulo

 

#!/bin/bash

p_titulo="$1"
p_texto_1="$2"
p_texto_2="$3"

DEV_IMPRESSORA="/dev/usb/lp0"

echo 1 | awk -v p_titulo="${p_titulo}" -v p_texto_1="${p_texto_1}" -v p_texto_2="${p_texto_2}"  '{

  # Inicializa a impressora
  printf("%c%c", 0x1b, 0x40)

  # Seleciona o codepage 850
  printf("%c%c%c", 0x1b, 0x74, 0x02)

  # Avanca algumas linhas
  printf("%c%c", 0x0a, 0x0a)

  # Centraliza o texto
  printf("%c%c%c", 0x1b, 0x61, 0x31)
 
  # Escolhe negrito e altura dupla para a fonte
  printf("%c%c%c", 0x1b, 0x21, 0x08 + 0x10)

  # Imprime o titulo
  printf("%s",p_titulo)

  # Volta a fonte normal
  printf("%c%c%c", 0x1b, 0x21, 0x00)
   
  # Avanca uma linha e imprime o primeiro texto
  # alinhado a esquerda
  printf("%c%c%c%c", 0x0a, 0x1b, 0x61, 0x30)
  printf("%s%c","=======================================", 0x0a)
  printf("%s%c",p_texto_1, 0x0a)
  printf("%s%c","=======================================", 0x0a)

  # Avanca algumas linhas e imprime o segundo texto
  # centralizado, em negrito, com alturaxlargura dupla
  printf("%c%c%c%c%c%c%c%c", 0x0a, 0x0a, 0x1b, 0x21, 0x08 + 0x10 + 0x20, 0x1b, 0x61, 0x31)
  printf("%s",p_texto_2)
  printf("%c%c%c%c%c%c", 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a)

  # Corta o papel (corte full)
  printf("%c%c", 0x1b, 0x69)
  

}' | iconv -f UTF-8 -t CP850 > ${DEV_IMPRESSORA}

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.