Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado

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

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.