En este post voy a exponer la lista de funciones disponibles al usar el Plugin para impresoras térmicas ESC POS V3 Desktop. En esta lista vas a encontrar todas las operaciones que el plugin soporta, desde la impresión de texto hasta la impresión de imágenes eligiendo el algoritmo adecuado.
Dicho plugin para impresoras térmicas soporta llamadas a través de HTTP y expone los métodos listados aquí a través de una API REST. Puedes ver algunos ejemplos con JavaScript y un diseñador de tickets.
El plugin inicia un servidor web en localhost:8000 y expone la siguientes rutas.
Haz una petición de tipo POST a http://localhost:8000/imprimir
enviando un JSON como se describe a continuación. El endpoint siempre devolverá un JSON que será true en caso de éxito y, en caso de error, una cadena conteniendo el mensaje de error.
Al invocar a este método debes enviarle
operaciones
: un arreglo de tipo OperaciónnombreImpresora
: el nombre de la impresora como cadenaserial
: un serial para el plugin en caso de que cuentes con uno. No es obligatorio y puedes enviarlo como una cadena vacíaEl tipo Operación
es un objeto que tiene las propiedades:
nombre
: el nombre de la operación que encontrarás a continuación en la lista de métodosargumentos
: un arreglo de tipo genérico que incluye los argumentos para la operación que se invoca. Envíalo vacío si la operación no tiene argumentosVeamos un ejemplo para imprimir texto plano que diga “Hola mundo” en la impresora llamada PT-210. En la lista de métodos, la función para escribir texto dice: EscribirTexto(texto string)
por lo que la operación se llama EscribirTexto
y recibe solo un argumento de tipo string, mismo que contiene el texto. El nombre del argumento no importa, solo su contenido y orden.
Entonces el arreglo de operaciones quedaría así:
[
{
"nombre": "EscribirTexto",
"argumentos": [
"Hola mundo"
]
}
]
Como lo vamos a imprimir en la PT-210 y no tenemos serial, nuestra carga útil queda así:
{
"nombreImpresora": "PT-210",
"serial": "",
"operaciones": [
{
"nombre": "EscribirTexto",
"argumentos": [
"Hola mundo"
]
}
]
}
Toma en cuenta que debemos codificar la carga útil como JSON, así que codificada queda así:
{"nombreImpresora":"PT-210","serial":"","operaciones":[{"nombre":"EscribirTexto","argumentos":["Hola mundo"]}]}
Supongamos que ahora queremos cortar el papel además de escribir el texto. Para ello usamos la función de corte que dice: Corte(lineas float64) así que dice que debemos invocar a la función llamada Corte enviándole la cantidad de líneas, quedando así sin codificar:
{
"nombreImpresora": "PT-210",
"serial": "",
"operaciones": [
{
"nombre": "EscribirTexto",
"argumentos": [
"Hola mundo"
]
},
{
"nombre": "Corte",
"argumentos": [
2
]
}
]
}
Observa que ahora se va a escribir el texto y después se va a cortar avanzando 2 líneas previamente. En caso de que la operación no tenga argumentos, el arreglo argumentos puede ir vacío [] y si tiene más de un argumento solo coloca los valores en orden.
Haz una petición de tipo GET a http://localhost:8000/impresoras. El endpoint siempre devolverá un JSON que será un arreglo de tipo cadena conteniendo las impresoras que haya encontrado en caso de éxito y, en caso de error, una cadena conteniendo el mensaje de error.
A continuación se describe el nombre de la operación y sus argumentos. Debes enviar cada operación como un objeto dentro del arreglo operaciones
, y cada operación debe tener un nombre
que corresponde al nombre de la función, además de los argumentos
que deben ir en el orden en el que se indica entre los paréntesis de cada función.
Lee una imagen del almacenamiento local, la convierte a blanco y negro y la imprime usando el algoritmo indicado. Revisar la función imprimirImagen
para ver los detalles de los parámetros
Corte completo
Corte parcial
Establece un carácter personalizado de 24×12. Es útil para imprimir caracteres no soportados por algunas impresoras, ya sea el euro, centavo o lo que puedas dibujar en un cuadro de 24×12
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 24×12 porque así es la fuente A. Si fuera la fuente B sería de 17×9, pero esa fuente no funciona en mi impresora así que no he probado. Es decir, no intentes esto si tienes seleccionada la fuente B
Descarga una imagen de internet, la convierte a blanco y negro y la imprime usando el algoritmo indicado. Revisar la función imprimirImagen
para ver los detalles de los parámetros
Deshabilita los caracteres personalizados
Deshabilita el modo de caracteres chinos. Si tu impresora es china y al imprimir acentos aparecen caracteres chinos es porque debes deshabilitarlos
Escribe texto en la impresora. El texto no será impreso hasta que se encuentre un salto de línea o se invoque a Feed
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
Habilita o deshabilita el modo enfatizado
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
Habilita o deshabilita la impresión al revés
Habilita o deshabilita la impresión inversa. En modo inverso, el fondo es negro y el texto blanco
Habilita o deshabilita la rotación de 90 grados
Habilita o deshabilita el modo subrayado
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
Imprime los datos almacenados en el búfer de la impresora (almacenados con EscribirTexto
y similares) y empuja el papel una cantidad de lineas
Genera una imagen a partir del html
usando el anchoPagina
como el ancho de la pantalla del navegador web para renderizar la imagen Después, imprime esa imagen con el maximoAncho
y el algoritmo
indicado
Genera una imagen a partir del html generado por la página web ubicada en la direccionPagina
usando el anchoPagina
como el ancho de la pantalla del navegador web para renderizar la imagen Después, imprime esa imagen con el maximoAncho
y el algoritmo
indicado
Habilita los caracteres personalizados. Si está habilitado entonces se va a imprimir el carácter personalizado en lugar del carácter que fue reemplazado
Habilita el modo de caracteres chinos. Solo presente porque existe también DeshabilitarElModoDeCaracteresChinos
Imprime la imagen usando el algoritmo indicado. Dependiendo del algoritmo (flotante que puede ser 0, 1 o 2) se tomará en cuenta el ancho o el alto máximo. Para el algoritmo NV Graphics y Raster Bit Image se toma en cuenta el ancho, para el caso del Bit image column format se toma en cuenta el alto.
Imprime una imagen usando el algoritmo Bit image column format. El alto de la imagen debe ser múltiplo de 24. Si el alto de la imagen es mayor al altoMaximo
especificado, la misma será redimensionada para que su ancho sea altoMaximo
Imprime una imagen usando el algoritmo Raster bit image. El ancho de la imagen debe ser múltiplo de 8. Si el ancho de la imagen es mayor al anchoMaximo
especificado, la misma será redimensionada para que su ancho sea anchoMaximo
Imprime una imagen usando el algoritmo NV Graphics. El ancho de la imagen debe ser múltiplo de 8. Si el ancho de la imagen es mayor al anchoMaximo
especificado, la misma será redimensionada para que su ancho sea anchoMaximo
Las siguientes funciones imprimen códigos de barras siguiendo el mismo proceso. Se genera la imagen, se convierte a blanco y negro y luego se imprime usando el algoritmo indicado. Revisar la función imprimirImagen
para ver los detalles de los parámetros.
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
Convierte el texto en base64 a una imagen, la convierte a blanco y negro y la imprime usando el algoritmo
indicado. La imagenCodificadaEnBase64
puede ser JPG o PNG y tener o no tener el “base64,” Revisar la función imprimirImagen
para ver los detalles de los parámetros. Dependiendo del algoritmo, hay que cambiar el ancho o máximo alto
Inicializar impresora. Limpia los datos en el búfer y reinicia la impresora al modo que estaba en efecto cuando fue encendida
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
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!.
En el ejercicio de programación de hoy vamos a trabajar con ANSI C para leer…
Hoy te quiero compartir una herramienta en línea para generar números aleatorios directamente en el…
Comprimir un PDF con Telegram es posible gracias a los Bots. Anteriormente en mi blog…
En este post te voy a enseñar a guardar solo algunos días de la semana…
En este post te enseñaré a usar tu impresora térmica comenzando en el paso de…
Hoy voy a tratar de solucionar el error ERR_SSL_CIPHER_OPERATION_FAILED que aparece al usar npm install…
Esta web usa cookies.
Ver comentarios
¡Muy interesante! estoy analizando tu información.
Gracias por compartir tus conocimientos ;)
Gracias a usted por comentar 😁