Skip to content

Latest commit

 

History

History
131 lines (100 loc) · 3.19 KB

File metadata and controls

131 lines (100 loc) · 3.19 KB

react-native-printer-imin

Language: English | 中文

Native module for iMin built-in thermal printers. Supports text, image, barcode, QR code, and label printing.

Device Info

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

Installation

npm install react-native-printer-imin
# or
yarn add react-native-printer-imin

Rebuild native code after installation (Expo Go not supported):

cd android && ./gradlew clean && cd ..
npx react-native run-android

Android Configuration

Add to android/app/proguard-rules.pro (if using ProGuard):

-keep class com.imin.** { *; }
-keep class com.printerimin.** { *; }
-dontwarn com.imin.**

Quick Start

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);

Receipt Example

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();
};

Error Handling

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);
}

API Reference

Complete method documentation -> api.md

Resources