Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 219 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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
  • Este tópico foi criado há 219 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...