Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created October 1, 2022 02:45
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/2f36655ef9d6ea8e6de73c6e09bbc735 to your computer and use it in GitHub Desktop.
Save parzibyte/2f36655ef9d6ea8e6de73c6e09bbc735 to your computer and use it in GitHub Desktop.
Interacción con impresoras térmicas a través de comandos ESC POS
función CargarImagenLocalEImprimir(ruta string, tamaño float64, maximoAncho float64)
Lee una imagen del almacenamiento local, la convierte a blanco y negro y la
redimensiona para que el ancho no sea mayor a maximoAncho Es obligatorio que
el ancho de la imagen sea múltiplo de 8 El tamaño no se refiere al ancho o
alto de la imagen, sino al multiplicador que amplia la imagen y puede ser: 0
para tamaño normal 1 para imprimir la imagen al doble del ancho 2 para
imprimir la imagen al doble del largo 3 para imprimir la imagen al doble del
ancho y largo
función Corte(lineas float64)
Corte completo
función CorteParcial()
Corte parcial
función DefinirCaracterPersonalizado(caracterRemplazoComoCadena string, matrizComoCadena string)
Establece un carácter personalizado de 24x12. Es útil para imprimir
caracteres no soportados por algunas impresoras, ya sea el euro, centavo o
lo que puedas dibujar en un cuadro de 24x12 Esta función establece el
carácter personalizado pero no lo imprime. Solo hace falta llamarla a una
vez, y después cada que se imprima el carácter reemplazado se va a imprimir
el personalizado La matrizComoCadena debe ser, como su nombre lo dice, una
matriz como cadena (wow). Debe tener exactamente 24 líneas (separadas por un
salto de línea) y en cada fila debe haber exactamente 12 dígitos, cada
dígito debe ser un 1 o un 0. No debe haber tabulaciones ni espacios extra
Aquí un ejemplo de cadena válida: 000001111000 000010000100 000100011110
000100100001 011100100001 010100100001 010100100001 010100011110
010100000010 011100000010 000100111010 000100101010 000111101110
000000000000 000000000000 000000000000 111010101110 100010101000
111010101110 001010100010 111011101110 000000000000 000000000000
000000000000 Nota: la matriz es de 24x12 porque así es la fuente A. Si fuera
la fuente B sería de 17x9, pero esa fuente no funciona en mi impresora así
que no he probado. Es decir, no intentes esto si tienes seleccionada la
fuente B
función DescargarImagenDeInternetEImprimir(urlImagen string, tamaño float64, maximoAncho float64)
Descarga una imagen de internet, la convierte a blanco y negro y la
redimensiona para que el ancho no sea mayor a maximoAncho Es obligatorio que
el ancho de la imagen sea múltiplo de 8 El tamaño no se refiere al ancho o
alto de la imagen, sino al multiplicador que amplia la imagen y puede ser: 0
para tamaño normal 1 para imprimir la imagen al doble del ancho 2 para
imprimir la imagen al doble del largo 3 para imprimir la imagen al doble del
ancho y largo
función DeshabilitarCaracteresPersonalizados()
Deshabilita los caracteres personalizados
función DeshabilitarElModoDeCaracteresChinos()
Deshabilita el modo de caracteres chinos. Si tu impresora es china y al
imprimir acentos aparecen caracteres chinos es porque debes deshabilitarlos
función EscribirTexto(texto string)
Escribe texto en la impresora. El texto no será impreso hasta que se
encuentre un salto de línea o es invoque a Feed
función EstablecerAlineacion(alineacion float64)
Establece la alineación del texto e imágenes (incluyendo códigos de barras y
QR) según la alineacion. Izquierda es 0, Centro 1 y Derecha 2
función EstablecerEnfatizado(enfatizado bool)
Habilita o deshabilita el modo enfatizado
función EstablecerFuente(fuente float64)
Establece la fuente, que puede ser 0 o 1. En mi caso solo soporta una fuente
que es la A Tener cuidado al cambiar la fuente e intentar imprimir un
carácter personalizado, pues por el momento solo funciona con la fuente A
función EstablecerImpresionAlReves(alReves bool)
Habilita o deshabilita la impresión al revés
función EstablecerImpresionBlancoYNegroInversa(invertir bool)
Habilita o deshabilita la impresión inversa. En modo inverso, el fondo es
negro y el texto blanco
función EstablecerRotacionDe90Grados(rotar bool)
Habilita o deshabilita la rotación de 90 grados
función EstablecerSubrayado(subrayado bool)
Habilita o deshabilita el modo subrayado
función EstablecerTamañoFuente(multiplicadorAncho, multiplicadorAlto float64)
Establece el tamaño de la fuente según el multiplicador de ancho y el
multiplicador del alto. Ambos valores pueden ir desde el 1 hasta el 8
También afecta a los caracteres personalizados
función Feed(lineas float64)
Imprime los datos almacenados en el búfer de la impresora (almacenados con
EscribirTexto y similares) y empuja el papel una cantidad de lineas
función HabilitarCaracteresPersonalizados()
Habilita los caracteres personalizados. Si está habilitado entonces se va a
imprimir el carácter personalizado en lugar del carácter que fue reemplazado
función HabilitarElModoDeCaracteresChinos()
Habilita el modo de caracteres chinos. Solo presente porque existe también
DeshabilitarElModoDeCaracteresChinos
función ImprimirCodigoDeBarrasCodabar(contenido string, alto, ancho, tamañoImagen float64)
Genera un código de barras codabar y lo imprime como una imagen, por lo que
hay que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo
función ImprimirCodigoDeBarrasCode128(contenido string, alto, ancho, tamañoImagen float64)
Genera un código de barras code128 y lo imprime como una imagen, por lo que
hay que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo
función ImprimirCodigoDeBarrasCode39(contenido string, incluirSumaDeVerificacion, modoAsciiCompleto bool, alto, ancho, tamañoImagen float64)
Genera un código de barras code39 y lo imprime como una imagen, por lo que
hay que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo Nota: el parámetro incluirSumaDeVerificacion y modoAsciiCompleto son
propios del algoritmo del código de barras, no del plugin
función ImprimirCodigoDeBarrasCode93(contenido string, alto, ancho, tamañoImagen float64)
Genera un código de barras code93 y lo imprime como una imagen, por lo que
hay que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo
función ImprimirCodigoDeBarrasEan(contenido string, alto, ancho, tamañoImagen float64)
Genera un código de barras Ean y lo imprime como una imagen, por lo que hay
que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo
función ImprimirCodigoDeBarrasEan8(contenido string, alto, ancho, tamañoImagen float64)
Genera un código de barras EAN8 y lo imprime como una imagen, por lo que hay
que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo
función ImprimirCodigoDeBarrasPdf417(contenido string, nivelSeguridad float64, alto, ancho, tamañoImagen float64)
Genera un código de barras PDF417 y lo imprime como una imagen, por lo que
hay que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo Nota: el nivel de seguridad tiene que ver con el propio algoritmo del
código de barras, no con el plugin. Debe ser entre 0 y 8
función ImprimirCodigoDeBarrasTwoOfFiveITF(contenido string, intercalado bool, alto, ancho, tamañoImagen float64)
Genera un código de barras Two of five o Interleaved Two of Five y lo
imprime como una imagen, por lo que hay que tomar en cuenta lo mismo que se
toma para las imágenes, es decir, el ancho debe ser múltiplo de 8 y el
tamañoImagen se refiere a: 0 para tamaño normal 1 para imprimir la imagen al
doble del ancho 2 para imprimir la imagen al doble del largo 3 para imprimir
la imagen al doble del ancho y largo Nota: el parámetro "intercalado" es
propio del algoritmo del código de barras, no del plugin
función ImprimirCodigoDeBarrasUpcA(contenido string, alto, ancho, tamañoImagen float64)
Genera un código de barras UPC A y lo imprime como una imagen, por lo que
hay que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo
función ImprimirCodigoDeBarrasUpcE(contenido string, alto, ancho, tamañoImagen float64)
Genera un código de barras UPC E y lo imprime como una imagen, por lo que
hay que tomar en cuenta lo mismo que se toma para las imágenes, es decir, el
ancho debe ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño
normal 1 para imprimir la imagen al doble del ancho 2 para imprimir la
imagen al doble del largo 3 para imprimir la imagen al doble del ancho y
largo
función ImprimirCodigoQr(contenido string, anchoMaximo, nivelRecuperacion, tamañoImagen float64)
Genera un código QR y lo imprime como una imagen, por lo que hay que tomar
en cuenta lo mismo que se toma para las imágenes, es decir, el ancho debe
ser múltiplo de 8 y el tamañoImagen se refiere a: 0 para tamaño normal 1
para imprimir la imagen al doble del ancho 2 para imprimir la imagen al
doble del largo 3 para imprimir la imagen al doble del ancho y largo Nota:
el nivelRecuperacion es propio del algoritmo generador del QR, no del
plugin. Puede ser 0 (low), 1 (medium), 2(high) y 3 (highest). Se recomienda
medium
función ImprimirImagenEnBase64(imagenCodificadaEnBase64 string, tamaño float64, maximoAncho float64)
Convierte el texto en base64 a una imagen, la convierte a blanco y negro y
la redimensiona para que el ancho no sea mayor a maximoAncho. Es obligatorio
que el ancho de la imagen sea múltiplo de 8 El tamaño no se refiere al ancho
o alto de la imagen, sino al multiplicador que amplia la imagen y puede ser:
0 para tamaño normal 1 para imprimir la imagen al doble del ancho 2 para
imprimir la imagen al doble del largo 3 para imprimir la imagen al doble del
ancho y largo Nota: la imagenCodificadaEnBase64 puede ser JPG o PNG y tener
o no tener el base64,
función Iniciar()
Inicializar impresora. Limpia los datos en el búfer y reinicia la impresora
al modo que estaba en efecto cuando fue encendida
función Pulso(pin float64, tiempoEncendido float64, tiempoApagado float64)
Genera un pulso tomando en cuenta tiempoEncendido que son los milisegundos
para encender y los milisegundos para apagar según tiempoApagado El pin
puede ser 48 o 49 Normalmente debería ser el pin 48, tiempoEncendido 60,
tiempoApagado 120
función TextoSegunPaginaDeCodigos(numeroPagina float64, pagina, texto string)
Permite escribir texto con acentos. Hay que especificar el número de página
(según la impresora) y el character code page para iconv.
Si me preguntan, yo he elegido la página 2 pero en lugar de especificar
cp860 (como debería ser) especifico cp850 Así puedo imprimir lo siguiente
con todo y acentos, signos, etcétera cp850 con numero 2 ¿EL VELOZ MURCIÉLAGO
HINDÚ COMÍA FELIZ CARDILLO Y KIWI? ¡LA CIGÜEÑA TOCABA EL SAXOFÓN DETRÁS DEL
PALENQUE DE PAJA!. cp850 con número 2 ¿el veloz murciélago hindú comía feliz
cardillo y kiwi? ¡la cigüeña tocaba el saxofón detrás del palenque de paja!.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment