UNPKG

react-native-printer-qr

Version:

A React Native Library to support USB/BLE/Net printer for Android platform

104 lines (78 loc) 3.25 kB
import React, { NativeModules } from 'react-native'; import EPToolkit from 'escpos-printer-toolkit'; var RNUSBPrinter = NativeModules.RNUSBPrinter; var RNBLEPrinter = NativeModules.RNBLEPrinter; var RNNetPrinter = NativeModules.RNNetPrinter; // var Printer = NativeModules.NetPrinter; var textTo64Buffer = (text) => { let options = { beep: false, cut: false, tailingLine: false, encoding: 'GBK' } const buffer = EPToolkit.exchange_text(text, options) return buffer.toString('base64'); } var billTo64Buffer = (text) => { let options = { beep: true, cut: true, encoding: 'GBK', tailingLine: true } const buffer = EPToolkit.exchange_text(text, options) return buffer.toString("base64"); } export const USBPrinter = { init: () => new Promise((resolve, reject) => RNUSBPrinter.init(() => resolve(), (error) => reject(error))), getDeviceList: () => new Promise((resolve, reject) => RNUSBPrinter.getDeviceList((printers) => resolve(printers), (error) => reject(error))), connectPrinter: (vendorId, productId) => new Promise((resolve, reject) => RNUSBPrinter.connectPrinter(vendorId, productId, (printer) => resolve(printer), (error) => reject(error))), closeConn: () => new Promise((resolve, reject) => { RNUSBPrinter.closeConn(); resolve(); }), printText: (text) => RNUSBPrinter.printRawData(textTo64Buffer(text), (error) => console.warn(error)), printBill: (text) => RNUSBPrinter.printRawData(billTo64Buffer(text), (error) => console.warn(error)), } export const BLEPrinter = { init: () => new Promise((resolve, reject) => RNBLEPrinter.init(() => resolve(), (error) => reject(error))), getDeviceList: () => new Promise((resolve, reject) => RNBLEPrinter.getDeviceList((printers) => resolve(printers), (error) => reject(error))), connectPrinter: (inner_mac_address) => new Promise((resolve, reject) => RNBLEPrinter.connectPrinter(inner_mac_address, (printer) => resolve(printer), (error) => reject(error))), closeConn: () => new Promise((resolve, reject) => { RNBLEPrinter.closeConn(); resolve(); }), printText: (text) => RNBLEPrinter.printRawData(textTo64Buffer(text), (error) => console.warn(error)), printBill: (text) => RNBLEPrinter.printRawData(billTo64Buffer(text), (error) => console.warn(error)), } export const NetPrinter = { init: () => new Promise((resolve, reject) => RNNetPrinter.init(() => resolve(), (error) => reject(error))), connectPrinter: (host, port) => new Promise((resolve, reject) => RNNetPrinter.connectPrinter(host, port, (printer) => resolve(printer), (error) => reject(error))), closeConn: () => new Promise((resolve, reject) => { RNNetPrinter.closeConn(); resolve(); }), printText: (text) => RNNetPrinter.printRawData(textTo64Buffer(text), (error) => console.warn(error)), printBill: (text) => RNNetPrinter.printRawData(billTo64Buffer(text), (error) => console.warn(error)), // printMessage: (ip, port, text) => Printer.printMessage(ip, port, text), } export const ReactNativePrinter = { print: (ip, port, text) => NativeModules.ReactNativePrinter.print(ip, port, text), }