@seiton/printer
Version:
Driver para las impresoras Seiton, incluye todas las funciones basicas para poder imprimir tickets
225 lines (224 loc) • 9.09 kB
TypeScript
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;
}