# react-native-printer
A React Native Library to support USB/BLE/Net printer for Android platform
## Installation
```
npm install react-native-printer --save
```
## Integrate module
To integrate `react-native-printer` with the rest of your react app just execute:
```
react-native link react-native-printer
```
## Usage
```javascript
import { USBPrinter, NetPrinter, BLEPrinter } from 'react-native-printer';
USBPrinter.printText('这是一个测试打印')
USBPrinter.printBill("这是一段打印测试文字")
```
## Example
### USBPrinter
Printer structure:
```
{
device_name: '/usb/lp1',
vendor_id: 1155,
product_id: 22304,
}
```
```javascript
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("这是一段打印测试文字\n");
}else{
console.log("没有设置打印机")
}
}
printBillTest = () => {
if(this.state.currentPrinter) {
USBPrinter.printBill("这是一段打印测试文字");
}else{
console.log("没有设置打印机")
}
}
...
render() {
return (
{
this.state.printers.map(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}`}
))
}
this.printTextTest()}>
Print Text
this.printBillTest()}>
Print Bill Text
)
}
...
```
### BLEPrinter
Printer structure:
```
{
device_name: '内部打印机',
inner_mac_address: 'XXXXX-XXXXXXXX',
}
```
```javascript
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("这是一段打印测试文字\n");
}else{
console.log("没有设置打印机")
}
}
printBillTest = () => {
if(this.state.currentPrinter) {
USBPrinter.printBill("这是一段打印测试文字");
}else{
console.log("没有设置打印机")
}
}
...
render() {
return (
{
this.state.printers.map(printer => (
this._connectPrinter(printer.inner_mac_address)}>
{`device_name: ${printer.device_name}, inner_mac_address: ${printer.inner_mac_address}`}
))
}
this.printTextTest()}>
Print Text
this.printBillTest()}>
Print Bill Text
)
}
...
```
### NetPrinter
Printer structure:
```
{
device_name: "192.168.10.241:9100",
host: '192.168.10.241',
port: 9100
}
```
```javascript
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("这是一段打印测试文字\n");
}else{
console.log("没有设置打印机")
}
}
printBillTest = () => {
if(this.state.currentPrinter) {
NetPrinter.printBill("这是一段打印测试文字");
}else{
console.log("没有设置打印机")
}
}
...
render() {
return (
{
this.state.printers.map(printer => (
this._connectPrinter(printer.host, printer.port)}>
{`device_name: ${printer.device_name}, host: ${printer.host}, port: ${printer.port}`}
))
}
this.printTextTest()}>
Print Text
this.printBillTest()}>
Print Bill Text
)
}
...
```