npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@seiton/printer

v3.0.4

Published

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

Downloads

169

Readme

Seiton Driver Node

NPM Version

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 ticket

Javascript

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 ticket

La 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 estado
  • Seiton.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, printerName debe ser el nombre exacto de la impresora tal como aparece en el sistema
  • Para Linux, devicePath debe 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