Language: English | 中文
Native module for iMin built-in thermal printers. Supports text, image, barcode, QR code, and label printing.
| Paper Width | Printable Pixels | Cutter |
|---|---|---|
| 80mm | 576px | Yes (some models) |
| 58mm | 384px | No |
| SDK Version | Notes |
|---|---|
| 2.0 | Full features, Android 15+ |
| 1.0 | Basic printing, older devices |
npm install react-native-printer-imin
# or
yarn add react-native-printer-iminRebuild native code after installation (Expo Go not supported):
cd android && ./gradlew clean && cd ..
npx react-native run-androidAdd to android/app/proguard-rules.pro (if using ProGuard):
-keep class com.imin.** { *; }
-keep class com.printerimin.** { *; }
-dontwarn com.imin.**
import PrinterImin, { IminPrintAlign, IminFontStyle } from 'react-native-printer-imin';
// 1. Initialize
await PrinterImin.initPrinter();
// 2. Check status
const status = await PrinterImin.getPrinterStatus();
if (status.code !== '0') {
console.log('Printer error:', status.message);
return;
}
// 3. Print text
await PrinterImin.printText('Hello World', {
fontSize: 28,
fontStyle: 1, // bold
align: 1, // center
});
// 4. Print QR code
await PrinterImin.printQrCode('https://www.imin.sg', {
qrSize: 6,
align: 1,
});
// 5. Feed paper
await PrinterImin.printAndFeedPaper(100);const printReceipt = async () => {
await PrinterImin.initPrinter();
await PrinterImin.printText('COFFEE SHOP', {
fontSize: 32, fontStyle: 1, align: 1,
});
await PrinterImin.printText('123 Main Street', { align: 1 });
await PrinterImin.printAndLineFeed();
await PrinterImin.printText('--------------------------------');
// width is pixel width, 80mm paper = 576px total
await PrinterImin.printColumnsText([
{ text: 'Coffee', width: 250, fontSize: 24, align: 0 },
{ text: 'x2', width: 100, fontSize: 24, align: 1 },
{ text: '$7.00', width: 150, fontSize: 24, align: 2 },
]);
await PrinterImin.printText('--------------------------------');
await PrinterImin.printColumnsText([
{ text: 'TOTAL', width: 300, fontSize: 28, align: 0 },
{ text: '$9.50', width: 150, fontSize: 28, align: 2 },
]);
await PrinterImin.printAndLineFeed();
await PrinterImin.printQrCode('receipt-12345', { qrSize: 5, align: 1 });
await PrinterImin.printText('Thank you!', { align: 1 });
await PrinterImin.partialCut();
};try {
const status = await PrinterImin.getPrinterStatus();
if (status.code !== '0') {
throw new Error('Printer error: ' + status.message);
}
await PrinterImin.printText('Hello World');
} catch (e) {
console.error('Print error:', e);
}Complete method documentation -> api.md