sunmi-printer-expo
v1.0.0
Published
Expo module for Sunmi thermal printers integration
Maintainers
Readme
Sunmi Printer Expo
Un módulo de Expo para integración con impresoras térmicas Sunmi en aplicaciones React Native.
Características
- ✅ Inicialización de impresora
- ✅ Impresión de texto con diferentes tamaños
- ✅ Códigos de barras y QR
- ✅ Impresión de imágenes (desde assets y base64)
- ✅ Control de salto de línea y corte de papel
- ✅ Soporte completo para TypeScript
Instalación
npm install sunmi-printer-expo
# o
yarn add sunmi-printer-expoConfiguración en Expo
Si usas Expo managed workflow, necesitarás usar un custom development client:
expo install expo-dev-clientUso
import {
initPrinter,
printText,
printTextWithSize,
printBarcode,
printQRCode,
printImage,
printImageBase64,
lineWrap,
cutPaper
} from 'sunmi-printer-expo';
// Inicializar la impresora
const success = await initPrinter();
if (success) {
console.log('Impresora inicializada correctamente');
}
// Imprimir texto simple
await printText('¡Hola mundo!');
// Imprimir texto con tamaño específico
await printTextWithSize('Texto grande', 24);
// Saltar líneas
await lineWrap(2);
// Imprimir código de barras
await printBarcode('1234567890');
// Imprimir código QR
await printQRCode('https://ejemplo.com');
// Imprimir imagen desde assets
await printImage('logo.png');
// Imprimir imagen desde base64
const base64Image = 'iVBORw0KGgoAAAANSUhEUgAA...';
await printImageBase64(base64Image);
// Cortar papel
await cutPaper();API
initPrinter(): Promise<boolean>
Inicializa la impresora Sunmi. Retorna true si la inicialización fue exitosa.
printText(text: string): Promise<void>
Imprime texto simple con el tamaño por defecto.
printTextWithSize(text: string, size: number): Promise<void>
Imprime texto con un tamaño específico de fuente.
lineWrap(lines: number): Promise<void>
Agrega saltos de línea (espacios en blanco).
printBarcode(data: string): Promise<void>
Imprime un código de barras con los datos proporcionados.
printQRCode(data: string): Promise<void>
Imprime un código QR con los datos proporcionados.
printImage(assetName: string): Promise<void>
Imprime una imagen desde los assets de la aplicación.
printImageBase64(base64String: string): Promise<void>
Imprime una imagen desde una cadena base64.
cutPaper(): Promise<void>
Corta el papel (si la impresora soporta esta función).
Compatibilidad
- ✅ Android (Impresoras Sunmi)
- ❌ iOS (No soportado - específico para Sunmi)
- ✅ Expo SDK 49+
- ✅ React Native 0.70+
Ejemplo completo
import React from 'react';
import { View, Button, Alert } from 'react-native';
import {
initPrinter,
printText,
printTextWithSize,
lineWrap,
cutPaper
} from 'sunmi-printer-expo';
export default function App() {
const handlePrint = async () => {
try {
// Inicializar impresora
const success = await initPrinter();
if (!success) {
Alert.alert('Error', 'No se pudo inicializar la impresora');
return;
}
// Imprimir recibo de ejemplo
await printTextWithSize('MI TIENDA', 28);
await lineWrap(1);
await printText('Fecha: ' + new Date().toLocaleDateString());
await printText('--------------------------------');
await printText('Producto 1 $10.00');
await printText('Producto 2 $15.50');
await printText('--------------------------------');
await printTextWithSize('TOTAL: $25.50', 24);
await lineWrap(2);
await printText('¡Gracias por su compra!');
await lineWrap(2);
// Cortar papel
await cutPaper();
} catch (error) {
Alert.alert('Error', 'Error al imprimir: ' + error.message);
}
};
return (
<View style={{ flex: 1, justifyContent: 'center', padding: 20 }}>
<Button title="Imprimir Recibo de Prueba" onPress={handlePrint} />
</View>
);
}Contribuir
Las contribuciones son bienvenidas. Por favor:
- Fork el repositorio
- Crea tu branch de feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Abre un Pull Request
Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
Soporte
Si encuentras algún problema o tienes preguntas:
- Revisa los Issues existentes
- Crea un nuevo issue si no encuentras tu problema
- Proporciona toda la información relevante (versión de Expo, modelo de impresora, etc.)
