UNPKG

@seiton/printer

Version:

Driver para las impresoras Seiton, incluye todas las funciones basicas para poder imprimir tickets

225 lines (224 loc) 9.09 kB
import { IMAGE_ALIGNMENT } from './enum/image-alignment.enum'; import { ISeitonConfig } from './interfaces/seiton-config.interface'; export declare class Seiton { private config; private ticket; private lastOperation; /** * Inicializa una nueva instancia de la clase Seiton para control de impresoras termicas. * * @param config - Configuración para la conexion con la impresora * @throws {Error} Si la configuracion es invalida o incompleta * * @example * // Configuracion para conexión USB en Windows * const seiton = new Seiton({ * usb: { * windows: { * vendorId: SEITON_VID.V2, * productId: SEITON_PID.V2 * } * } * }); * * @example * // Configuracion para conexion USB en Linux * const seiton = new Seiton({ * usb: { * linux: { * devicePath: '/dev/usb/lp0' * } * } * }); * * @example * // Configuracion para conexion Ethernet * const seiton = new Seiton({ * ethernet: { * ip: '192.168.1.100', * port: 9100 * } * }); * */ constructor(config: ISeitonConfig); private validarConfiguracion; /** * Agrega un texto al ticket actual, agregando automaticamente el salto de linea al final. * * @param text - El texto a agregar al ticket. * @returns La instancia actual de Seiton para continuar armando el ticket */ addText(text: string): Seiton; /** * Restablece los estilos predeterminados de la impresora a los valores por defecto. * * Cualquier texto/imagen/codigo de barras/codigo QR agregado despues de esta llamada se verá afectado por los estilos predeterminados. * * @returns La instancia actual de Seiton para continuar armando el ticket */ setDefaultStyles(): Seiton; /** * Alinea todo el contenido a ser insertado **despues** de la llamada a esta funcion a la derecha. * @returns La instancia actual de Seiton para continuar armando el ticket */ alignToRight(): Seiton; /** * Centra todo el contenido a ser insertado **despues** de la llamada a esta funcion. * @returns La instancia actual de Seiton para continuar armando el ticket */ alignToCenter(): Seiton; /** * Avanza el papel una línea. * @returns La instancia actual de Seiton para continuar armando el ticket */ feedLine(): Seiton; /** * Avanza el papel un número específico de líneas. * @param {number} lines Número de líneas a avanzar. * @returns La instancia actual de Seiton para continuar armando el ticket */ feedLines(lines: number): Seiton; /** * Activa la cuchilla de la impresora para cortar el papel. * @returns La instancia actual de Seiton para continuar armando el ticket */ cutPaper(): Seiton; /** * Avanza el papel una linea y luego lo corta. * @returns La instancia actual de Seiton para continuar armando el ticket */ feedAndCutPaper(): Seiton; /** * Aplica el formato de texto doble alto y doble ancho. * @returns La instancia actual de Seiton para continuar armando el ticket */ doubleTallDoubleWide(): Seiton; /** * Aplica el formato de texto doble alto. * @returns La instancia actual de Seiton para continuar armando el ticket */ doubleTall(): Seiton; /** * Aplica el formato de texto doble ancho. * @returns La instancia actual de Seiton para continuar armando el ticket */ doubleWide(): Seiton; /** * Aplica el formato de texto doble alto y negrita. * @returns La instancia actual de Seiton para continuar armando el ticket */ doubleTallBold(): Seiton; /** * Activa el buzzer de la impresora y hace que emita un número especificado de pitidos * con una duración determinada para cada uno. * * @param {number} beepCount Número de pitidos a emitir (1-8). * @param {number} beepMillis Duración de cada pitido (1-10). * @returns La instancia actual de Seiton para continuar armando el ticket */ posBeep(beepCount: number, beepMillis: number): Seiton; /** * Genera un código QR de tamaño y contenido configurable. * * @param {string} content - El contenido que se almacenará en el código QR. * @param {number} size - Tamaño del módulo del QR (valor entre 1 y 16). * @throws {Error} Si el tamaño está fuera del rango permitido (1-16). * @returns {Seiton} La instancia actual de Seiton para continuar armando el ticket * * @example * // Generar un código QR de tamaño 4 con el contenido "Hola Mundo" * addQRCode("Hola Mundo", 4); */ addQRCode(content: string, size: number): Seiton; /** * Genera un código de barras CODE128. * Permite ajustar el tamaño del código de barras (ancho y altura), así como el ancho de las barras. * @param barcodeData - El contenido del código de barras en formato ASCII. * @param width - El ancho del código de barras (1 a 6). * @param height - La altura del código de barras (1 a 255). * @returns La instancia actual de Seiton para continuar armando el ticket. */ addBarcode(barcodeData: string, width?: number, height?: number): Seiton; /** * Método para imprimir la página de autodiagnóstico de la impresora. * @returns La instancia actual de Seiton para continuar armando el ticket */ printSelfTest(): Seiton; /** * Agrega una imagen al ticket. La imagen puede ser redimensionada según los parámetros especificados. * @param imagePath - Ruta al archivo de imagen * @param width - Ancho deseado de la imagen (opcional, por defecto usa el ancho de la impresora 384) * @param height - Alto deseado de la imagen (opcional, mantiene la proporción si no se especifica) * @param alignment - Alineación de la imagen (opcional, por defecto es CENTER = 2, LEFT = 0, RIGHT = 1) * @returns La instancia actual de Seiton para continuar armando el ticket */ addImage(imagePath: string, width?: number, height?: number, alignment?: IMAGE_ALIGNMENT): Seiton; /** * Mapea los caracteres especiales a sus códigos de impresora * @param text Texto a mapear * @returns texto con caracteres especiales mapeados */ private mapSpecialCharacters; /** * Abre el cajón de dinero conectado a la impresora * @returns La instancia actual de Seiton para continuar armando el ticket */ openCashDrawer(): Seiton; /** * Aplica el formato de texto en negrita. * @returns La instancia actual de Seiton para continuar armando el ticket */ enableBold(): Seiton; /** * Desactiva el formato de texto en negrita. * @returns La instancia actual de Seiton para continuar armando el ticket */ disableBold(): Seiton; /** * Aplica el formato de texto subrayado. * @returns La instancia actual de Seiton para continuar armando el ticket */ enableUnderline(): Seiton; /** * Desactiva el formato de texto subrayado. * @returns La instancia actual de Seiton para continuar armando el ticket */ disableUnderline(): Seiton; private printImageBuffer; /** * Verifica si la impresora está conectada por USB o Red en base a la configuracion de la clase Seiton. * @returns {boolean} true si la impresora está conectada, false si no lo está. */ isPrinterConnected(): Promise<boolean>; /** * Configura la impresora para obtener una dirección IP dinámica mediante DHCP. * @returns {Seiton} La instancia actual de Seiton para permitir el encadenamiento de métodos. */ setDHCP(): Seiton; /** * Configura la impresora con una dirección IP estática. * Este método envía el comando necesario para establecer una IP fija, máscara de subred, * puerta de enlace y servidores DNS en la impresora. * * @param {string} ip - La dirección IP estática a asignar. * @param {string} mask - La máscara de subred asociada a la IP. * @param {string} gateway - La dirección de la puerta de enlace. * @param {string} dns1 - La dirección del primer servidor DNS. * @param {string} dns2 - La dirección del segundo servidor DNS. * @returns {Seiton} La instancia actual de Seiton para permitir el encadenamiento de métodos. * @throws {Error} Si alguna de las direcciones no tiene 4 octetos. */ setStaticIP(ip: string, mask: string, gateway: string, dns1: string, dns2: string): Seiton; private parseAndValidateIP; private calculateChecksum; /** * Imprime el ticket en el puerto USB especificado en el constructor de la clase. * @throws Lanzará un error si el ticket no se puede imprimir. */ print(): Promise<void>; private chain; private inicializarBuffer; private enviarComandosAImpresora; private isHostConnected; }