Skip to content

Fork of react-native-printer with raw printer function and promise timeouts

Notifications You must be signed in to change notification settings

mauricioblum/react-native-printer-extended

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-printer-extended

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

Installation

npm install react-native-printer-extended --save

Integrate module

To integrate react-native-printer with the rest of your react app just execute:

react-native link react-native-printer-extended

Usage

import {
  USBPrinter,
  NetPrinter,
  BLEPrinter
} from "react-native-printer-extended";

USBPrinter.printText("<C>这是一个测试打印</C>");
USBPrinter.printBill("<C>这是一段打印测试文字</C>");

Example

USBPrinter

Printer structure:

{
  device_name: '/usb/lp1',
  vendor_id: 1155,
  product_id: 22304,
}
  componentDidMount = () => {
    if(Platform.OS == 'android'){
      USBPrinter.init().then(()=> {
        //list printers
        USBPrinter.getDeviceList()
          .then(printers => {
            this.setState(Object.assign({}, this.state, {printers: printers}))
          });

        //connect printer
        vendorID = 1155
        productId = 22304
        USBPrinter.connectPrinter(vendorID, productId).then(
          (printer) => this.setState(Object.assign({}, this.state, {currentPrinter: printer})),
          error => console.warn(error))
      })
    }
  }

  printTextTest = () => {
    if(this.state.currentPrinter) {
      USBPrinter.printText("<C>这是一段打印测试文字</C>\n");
    }else{
      console.log("没有设置打印机")
    }

  }

  printBillTest = () => {
    if(this.state.currentPrinter) {
      USBPrinter.printBill("<C>这是一段打印测试文字</C>");
    }else{
      console.log("没有设置打印机")
    }
  }

  ...

  render() {
    return (
      <View style={styles.container}>
        {
          this.state.printers.map(printer => (
            <TouchableOpacity key={printer.device_id} onPress={(printer) => this._connectPrinter(printer.vendor_id, printer.product_id)}>
              {`device_name: ${printer.device_name}, device_id: ${printer.device_id}, vendor_id: ${printer.vendor_id}, product_id: ${printer.product_id}`}
            </TouchableOpacity>
            ))
        }
        <TouchableOpacity onPress={() => this.printTextTest()}>
          <Text> Print Text </Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={() => this.printBillTest()}>
          <Text> Print Bill Text </Text>
        </TouchableOpacity>
      </View>
    )
  }

  ...

BLEPrinter

Printer structure:

{
  device_name: '内部打印机',
  inner_mac_address: 'XXXXX-XXXXXXXX',
}
  componentDidMount = () => {
    if(Platform.OS == 'android'){
      USBPrinter.init().then(()=> {
        //list printers
        USBPrinter.getDeviceList()
          .then(printers => {
            this.setState(Object.assign({}, this.state, {printers: printers}))
          });


      })
    }
  }

  _connectPrinter => (inner_mac_address) => {
    if(Platform.OS == 'android'){
      //connect printer
      USBPrinter.connectPrinter(inner_mac_address).then(
        (printer) => this.setState(Object.assign({}, this.state, {currentPrinter: printer})),
        error => console.warn(error))
    }
  }

  printTextTest = () => {
    if(this.state.currentPrinter) {
      USBPrinter.printText("<C>这是一段打印测试文字</C>\n");
    }else{
      console.log("没有设置打印机")
    }

  }

  printBillTest = () => {
    if(this.state.currentPrinter) {
      USBPrinter.printBill("<C>这是一段打印测试文字</C>");
    }else{
      console.log("没有设置打印机")
    }
  }

  ...

  render() {
    return (
      <View style={styles.container}>
        {
          this.state.printers.map(printer => (
            <TouchableOpacity key={printer.inner_mac_address} onPress={(printer) => this._connectPrinter(printer.inner_mac_address)}>
              {`device_name: ${printer.device_name}, inner_mac_address: ${printer.inner_mac_address}`}
            </TouchableOpacity>
            ))
        }
        <TouchableOpacity onPress={() => this.printTextTest()}>
          <Text> Print Text </Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={() => this.printBillTest()}>
          <Text> Print Bill Text </Text>
        </TouchableOpacity>
      </View>
    )
  }

  ...

NetPrinter

Printer structure:

{
  device_name: "192.168.10.241:9100",
  host: '192.168.10.241',
  port: 9100
}
  componentDidMount = () => {
    if(Platform.OS == 'android'){
      NetPrinter.init().then(() => {
        this.setState(Object.assign({}, this.state, {printers: [{host: '192.168.10.241', port: 9100}]}))
        })
    }
  }

  _connectPrinter => (host, port) => {
    if(Platform.OS == 'android'){
      //connect printer
      NetPrinter.connectPrinter(host, port).then(
        (printer) => this.setState(Object.assign({}, this.state, {currentPrinter: printer})),
        error => console.warn(error))
    }
  }

  printTextTest = () => {
    if(this.state.currentPrinter) {
      NetPrinter.printText("<C>这是一段打印测试文字</C>\n");
    }else{
      console.log("没有设置打印机")
    }

  }

  printBillTest = () => {
    if(this.state.currentPrinter) {
      NetPrinter.printBill("<C>这是一段打印测试文字</C>");
    }else{
      console.log("没有设置打印机")
    }
  }

  ...

  render() {
    return (
      <View style={styles.container}>
        {
          this.state.printers.map(printer => (
            <TouchableOpacity key={printer.device_id} onPress={(printer) => this._connectPrinter(printer.host, printer.port)}>
              {`device_name: ${printer.device_name}, host: ${printer.host}, port: ${printer.port}`}
            </TouchableOpacity>
            ))
        }
        <TouchableOpacity onPress={() => this.printTextTest()}>
          <Text> Print Text </Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={() => this.printBillTest()}>
          <Text> Print Bill Text </Text>
        </TouchableOpacity>
      </View>
    )
  }

  ...

About

Fork of react-native-printer with raw printer function and promise timeouts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published