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}