Expo module for Sunmi thermal printers integration
npm install sunmi-printer-expobash
npm install sunmi-printer-expo
o
yarn add sunmi-printer-expo
`
$3
Si usas Expo managed workflow, necesitarás usar un custom development client:
`bash
expo install expo-dev-client
`
Uso
`typescript
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
$3
Inicializa la impresora Sunmi. Retorna true si la inicialización fue exitosa.
$3
Imprime texto simple con el tamaño por defecto.
$3
Imprime texto con un tamaño específico de fuente.
$3
Agrega saltos de línea (espacios en blanco).
$3
Imprime un código de barras con los datos proporcionados.
$3
Imprime un código QR con los datos proporcionados.
$3
Imprime una imagen desde los assets de la aplicación.
$3
Imprime una imagen desde una cadena base64.
$3
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
`typescript
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 (
);
}
`
Contribuir
Las contribuciones son bienvenidas. Por favor:
1. Fork el repositorio
2. Crea tu branch de feature (git checkout -b feature/AmazingFeature)
3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
4. Push al branch (git push origin feature/AmazingFeature`)