rn-lmt-thermal-receipt-printer
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

rn-lmt-thermal-receipt-printer

npm npm

Implement Android IOS
Image & QR (URL & Base64) ✔️ ✔️
Fix cut ✔️ ✔️
Print With Column ✔️ ✔️
NET Connect Timeout ✔️ ✔️

Print Image & QR with bluetooth in IOS just implement not tested yet

Support

Printer Android IOS
USBPrinter ✔️
BLEPrinter ✔️ ✔️
NetPrinter ✔️ ✔️

Installation

npm i rn-lmt-thermal-receipt-printer

or

yarn add rn-lmt-thermal-receipt-printer

next step

# RN >= 0.60
cd ios && pod install

# RN < 0.60
react-native link rn-lmt-thermal-receipt-printer

API Reference

    init: () => Promise;
    getDeviceList: () => Promise;
    /**
     * `timeout`
     * @default 4000ms
     */
    connectPrinter: (host: string, port: number, timeout?: number | undefined) => Promise;
    closeConn: () => Promise;
    /**
     * Print text
     */
    printText: (text: string, opts?: {}) => void;
    /**
     * Print text & end the bill & cut
     */
    printBill: (text: string, opts?: PrinterOptions) => void;
    /**
     * print with image url
     */
    printImage: (imgUrl: string, opts?: PrinterImageOptions) => void;
    /**
     * Base 64 string
     */
    printImageBase64: (Base64: string, opts?: PrinterImageOptions) => void;
    /**
     * Only android print with encoder
     */
    printRaw: (text: string) => void;
    /**
     * print column
     * 80mm => 46 character
     * 58mm => 30 character
     */
    printColumnsText: (texts: string[], columnWidth: number[], columnAlignment: ColumnAlignment[], columnStyle?: string[], opts?: PrinterOptions) => void;

Styling

import { COMMANDS, ColumnAlignment } from "rn-lmt-thermal-receipt-printer";

See more here

Example

Print Columns Text

const BOLD_ON = COMMANDS.TEXT_FORMAT.TXT_BOLD_ON;
const BOLD_OFF = COMMANDS.TEXT_FORMAT.TXT_BOLD_OFF;
let orderList = [
    ["1. Skirt Palas Labuh Muslimah Fashion", "x2", "500$"],
    ["2. BLOUSE ROPOL VIRAL MUSLIMAH FASHION", "x4222", "500$"],
    [
        "3. Women Crew Neck Button Down Ruffle Collar Loose Blouse",
        "x1",
        "30000000000000$",
    ],
    ["4. Retro Buttons Up Full Sleeve Loose", "x10", "200$"],
    ["5. Retro Buttons Up", "x10", "200$"],
];
let columnAlignment = [
    ColumnAlignment.LEFT,
    ColumnAlignment.CENTER,
    ColumnAlignment.RIGHT,
];
let columnWidth = [46 - (7 + 12), 7, 12];
const header = ["Product list", "Qty", "Price"];
Printer.printColumnsText(header, columnWidth, columnAlignment, [
    `${BOLD_ON}`,
    "",
    "",
]);
for (let i in orderList) {
    Printer.printColumnsText(orderList[i], columnWidth, columnAlignment, [
        `${BOLD_OFF}`,
        "",
        "",
    ]);
}
Printer.printBill(`${CENTER}Thank you\n`);

Print image

Printer.printImage(
    "https://media-cdn.tripadvisor.com/media/photo-m/1280/1b/3a/bd/b5/the-food-bill.jpg",
    {
        imageWidth: 575,
        // imageHeight: 1000,
        // paddingX: 100
    }
);

See more here

Troubleshoot

  • When installing react-native version >= 0.60, XCode shows this error:
duplicate symbols for architecture x86_64

That's because the .a library uses CocoaAsyncSocket library and Flipper uses it too.

Podfile

...
  use_native_modules!

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  # add_flipper_pods!
  # post_install do |installer|
  #   flipper_post_install(installer)
  # end
...

and comment out code related to Flipper in ios/AppDelegate.m

Package Sidebar

Install

npm i rn-lmt-thermal-receipt-printer

Weekly Downloads

2

Version

1.0.2

License

ISC

Unpacked Size

6.59 MB

Total Files

106

Last publish

Collaborators

  • leminhtrong1999