@seiton/printer
v3.0.4
Published
Driver para las impresoras Seiton, incluye todas las funciones basicas para poder imprimir tickets
Downloads
169
Maintainers
Readme
Seiton Driver Node
Driver para impresoras térmicas Seiton que facilita la impresión de tickets mediante Node.js, con soporte completo de TypeScript.
📋 Requisitos Previos
- Node.js >= 14.0.0
- npm >= 6.0.0
- Impresora Seiton conectada vía USB
🚀 Instalación
npm install @seiton/printer💡 Uso Básico
Typescript
import { Seiton } from '@seiton/printer';
// Crear una nueva instancia de Seiton para Windows vía USB
const printerWindows = new Seiton({
usb: {
windows: {
printerName: 'POS-80', // Nombre de la impresora en Windows
},
},
});
// O para Linux vía USB
const printerLinux = new Seiton({
usb: {
linux: {
devicePath: '/dev/usb/lp0',
},
},
});
// O para conexión vía Ethernet
const printerNetwork = new Seiton({
ethernet: {
ip: '192.168.1.100',
port: 9100,
},
});
// Crear un ticket
printer
.alignToCenter() // Centrar el contenido
.doubleTallDoubleWide() // Texto doble alto y ancho
.addText('Mi Negocio') // Agregar texto
.feedLines(1) // Avanzar una línea
.setDefaultStyles() // Restablecer estilos
.addText('Ticket #001') // Agregar número de ticket
.feedLines(2) // Avanzar dos líneas
.addQRCode('https://minegocio.com', 8) // Generar código QR
.feedAndCutPaper() // Avanzar y cortar papel
.print(); // Imprimir el ticketJavascript
const { Seiton } = require('@seiton/printer');
// Crear una nueva instancia de Seiton para Windows vía USB
const printerWindows = new Seiton({
usb: {
windows: {
printerName: 'POS-80', // Nombre de la impresora en Windows
},
},
});
// O para Linux vía USB
const printerLinux = new Seiton({
usb: {
linux: {
devicePath: '/dev/usb/lp0',
},
},
});
// O para conexión vía Ethernet
const printerNetwork = new Seiton({
ethernet: {
ip: '192.168.1.100',
port: 9100,
},
});
// Crear un ticket
printer
.alignToCenter() // Centrar el contenido
.doubleTallDoubleWide() // Texto doble alto y ancho
.addText('Mi Negocio') // Agregar texto
.feedLines(1) // Avanzar una línea
.setDefaultStyles() // Restablecer estilos
.addText('Ticket #001') // Agregar número de ticket
.feedLines(2) // Avanzar dos líneas
.addQRCode('https://minegocio.com', 8) // Generar código QR
.feedAndCutPaper() // Avanzar y cortar papel
.print(); // Imprimir el ticketLa diferencia principal radica en la manera de importar el módulo.
📖 Métodos Disponibles
Estilos de Texto
.setDefaultStyles()- Restablece todos los estilos a sus valores predeterminados.doubleTall()- Aplica formato de texto doble alto.doubleWide()- Aplica formato de texto doble ancho.doubleTallBold()- Aplica formato de texto doble alto y negrita
Alineación
.alignToCenter()- Centra el contenido.alignToRight()- Alinea el contenido a la derecha
Manejo de Texto y Papel
.addText(texto: string)- Agrega texto al ticket.feedLine()- Avanza una línea.feedLines(lineas: number)- Avanza múltiples líneas.feedAndCutPaper()- Avanza y corta el papel.cutPaper()- Corta el papel
Códigos y Elementos Especiales
.addQRCode(contenido: string, tamaño: number)- Genera un código QR.addBarcode(datos: string, ancho?: number, alto?: number)- Imprime un código de barras.posBeep(cantidadPitidos: number, duracionMs: number)- Activa el buzzer.setStaticIP(ip: string, mask: string, gateway: string, dns1: string, dns2: string)- Configura la impresora con una dirección IP estática.setDHCP()- Configura la impresora para obtener una dirección IP dinámica mediante DHCP
Control de Impresión y Estado
.print()- Imprime el ticket.printSelfTest()- Imprime página de prueba.isPrinterConnected()- Verifica si la impresora está conectada y accesible
Métodos Estáticos (Windows)
Seiton.getWindowsPrinters()- Obtiene la lista de todas las impresoras instaladas en Windows con su estadoSeiton.isWindowsPrinterAvailable(printerName: string)- Verifica si una impresora específica está disponible en Windows
🎯 Ejemplos Prácticos
Ticket de Venta
// Configuración para Windows
const printer = new Seiton({
usb: {
windows: {
printerName: 'POS-80',
},
},
});
// O para Linux
// const printer = new Seiton({
// linux: {
// devicePath: '/dev/usb/lp0'
// }
// });
printer
.alignToCenter()
.doubleTallBold()
.addText('Supermercado XYZ')
.setDefaultStyles()
.feedLines(1)
.addText('Fecha: 2024-01-20')
.addText('Ticket #: 001')
.feedLines(1)
.addText('Producto 1 ........... $100')
.addText('Producto 2 ........... $200')
.feedLines(1)
.doubleTallBold()
.alignToRight()
.addText('Total: $300')
.setDefaultStyles()
.feedLines(2)
.alignToCenter()
.addQRCode('https://miticket.com/001', 8)
.feedAndCutPaper()
.print();Ticket Simple con Código de Barras
// Configuración para Windows
const printer = new Seiton({
usb: {
windows: {
printerName: 'POS-80',
},
},
});
printer.alignToCenter().addText('Código de Producto').addBarcode('12345678', 4, 100).feedLines(4).print();Configuración de la impresora con IP estática
const printer = new Seiton({
usb: {
windows: {
printerName: 'POS-80',
},
},
});
printer.setStaticIP('192.168.1.100', '255.255.255.0', '192.168.1.1', '8.8.8.8', '8.8.4.4').printSelfTest();Configuración de la impresora con IP dinámica
const printer = new Seiton({
usb: {
windows: {
printerName: 'POS-80',
},
},
});
printer.setDHCP().printSelfTest();🔍 Obtener Nombres de Impresoras en Windows
Antes de configurar tu impresora en Windows, puedes obtener la lista de impresoras disponibles:
Obtener todas las impresoras
import { Seiton } from '@seiton/printer';
// Obtener lista de impresoras disponibles en Windows
const printers = await Seiton.getWindowsPrinters();
console.log(printers);
// Salida:
// [
// { name: "POS-80", status: "Idle", isDefault: false },
// { name: "Microsoft Print to PDF", status: "Idle", isDefault: true }
// ]Verificar si una impresora específica está disponible
import { Seiton } from '@seiton/printer';
const isAvailable = await Seiton.isWindowsPrinterAvailable('POS-80');
if (isAvailable) {
console.log('La impresora POS-80 está disponible');
// Crear instancia con esa impresora
const printer = new Seiton({
usb: {
windows: {
printerName: 'POS-80',
},
},
});
} else {
console.log('La impresora no está disponible');
}Ejemplo completo: Seleccionar impresora dinámicamente
import { Seiton } from '@seiton/printer';
// Obtener todas las impresoras
const printers = await Seiton.getWindowsPrinters();
// Buscar una impresora Seiton (por ejemplo, que contenga "POS" en el nombre)
const seitonPrinter = printers.find(p => p.name.includes('POS'));
if (seitonPrinter) {
console.log(`Impresora encontrada: ${seitonPrinter.name}`);
// Crear instancia con la impresora encontrada
const printer = new Seiton({
usb: {
windows: {
printerName: seitonPrinter.name,
},
},
});
// Imprimir ticket de prueba
printer
.alignToCenter()
.addText('Impresora configurada correctamente')
.feedAndCutPaper()
.print();
} else {
console.log('No se encontró ninguna impresora Seiton');
}🔧 Configuración del Dispositivo
La librería soporta dos modos de configuración dependiendo del sistema operativo:
Windows
🔧 Configuración
La clase Seiton acepta un objeto de configuración con las siguientes interfaces:
ISeitonConfig
Interfaz principal de configuración que permite especificar el tipo de conexión:
interface ISeitonConfig {
usb?: ISeitonUSBConfig; // Configuración para conexión USB
ethernet?: ISeitonEthConfig; // Configuración para conexión Ethernet
}ISeitonUSBConfig
Configuración específica para conexiones USB en diferentes sistemas operativos:
interface ISeitonUSBConfig {
windows?: ISeitonWindowsConfig; // Configuración para Windows
linux?: ISeitonLinuxConfig; // Configuración para Linux
}ISeitonWindowsConfig
Configuración para impresoras en Windows:
interface ISeitonWindowsConfig {
printerName: string; // Nombre de la impresora en Windows (ej: 'POS-80')
}ISeitonLinuxConfig
Configuración para dispositivos USB en Linux:
interface ISeitonLinuxConfig {
devicePath: string; // Ruta del dispositivo USB (ej: '/dev/usb/lp0')
}ISeitonEthConfig
Configuración para conexiones Ethernet:
interface ISeitonEthConfig {
ip: string; // Dirección IP de la impresora
port: number; // Puerto de la impresora (típicamente 9100)
}Notas importantes:
- Solo se debe proporcionar una configuración a la vez (USB o Ethernet)
- Para USB, solo se debe configurar un sistema operativo (Windows o Linux)
- Para Windows,
printerNamedebe ser el nombre exacto de la impresora tal como aparece en el sistema - Para Linux,
devicePathdebe ser una ruta válida al dispositivo USB - Para Ethernet, se requiere una dirección IP válida y un puerto
// Configuración para Windows usando el nombre de la impresora
const printer = new Seiton({
usb: {
windows: {
printerName: 'POS-80', // Nombre exacto de la impresora en Windows
},
},
});
// Puedes obtener el nombre exacto usando el método getWindowsPrinters()
const printers = await Seiton.getWindowsPrinters();
const myPrinter = printers[0]; // Selecciona la impresora deseada
const printer = new Seiton({
usb: {
windows: {
printerName: myPrinter.name,
},
},
});Linux
En Linux, necesitas proporcionar la ruta del dispositivo:
const printer = new Seiton({
usb: {
linux: {
devicePath: '/dev/usb/lp0', // Ajusta según tu configuración
},
},
});Las rutas típicas en Linux son:
/dev/usb/lp0(primera impresora)/dev/usb/lp1(segunda impresora)
Nota: Solo puedes configurar un sistema operativo a la vez. La librería lanzará un error si intentas configurar ambos simultáneamente.
Verificación de Conexión
Puedes verificar si la impresora está correctamente conectada y accesible usando el método isPrinterConnected():
const printer = new Seiton({
usb: {
windows: {
printerName: 'POS-80',
},
},
});
const isPrinterConnected = await printer.isPrinterConnected();
if (isPrinterConnected) {
console.log('Impresora conectada y lista');
} else {
console.log('No se pudo conectar con la impresora');
}Manejo de Errores
La librería proporciona mensajes de error detallados que te ayudarán a identificar problemas comunes:
- Impresora no encontrada (VID/PID incorrectos)
- Dispositivo ocupado por otro proceso
- Interfaces USB no disponibles
- Errores de acceso al dispositivo
📜 Términos y Condiciones de Uso
- Esta libreria es de uso gratuito para los clientes de Seiton.
- No se garantiza funcionamiento con otras impresoras.
- Seiton se reserva el derecho de realizar cambios en la librería, publicando actualizaciones sin previo aviso.
🏢 Empresa
Seiton - Soluciones de impresión para tu negocio.
📞 Soporte
- Sitio Web: https://seiton.com.ar/
- Email: [email protected]
