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

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

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

Example

USBPrinter

Printer structure

{
device_name: '/usb/lp1',
vendor_id: ,
product_id: ,
}
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 =
productId =
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:
}
 componentDidMount = () => {
if(Platform.OS == 'android'){
NetPrinter.init().then(() => {
this.setState(Object.assign({}, this.state, {printers: [{host: '192.168.10.241', port: }]}))
})
}
} _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>
)
} ...

转载自 http://npm.taobao.org/package/react-native-printer

react-native-printer的更多相关文章

  1. React Native 之 Text的使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  2. React Native环境配置之Windows版本搭建

    接近年底了,回想这一年都做了啥,学习了啥,然后突然发现,这一年买了不少书,看是看了,就没有完整看完的.悲催. 然后,最近项目也不是很紧了,所以抽空学习了H5.自学啃书还是很无趣的,虽然Head Fir ...

  3. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

  4. 【腾讯Bugly干货分享】React Native项目实战总结

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...

  5. React Native环境搭建以及几个基础控件的使用

    之前写了几篇博客,但是没有从最基础的开始写,现在想了想感觉不太合适,所以现在把基础的一些东西给补上,也算是我从零开始学习RN的经验吧! 一.环境搭建 首先声明一下,本人现在用的编辑器是SublimeT ...

  6. React Native组件介绍

    1.React Native目前已有的组件 ActivityIndicatorIOS:标准的旋转进度轮; DatePickerIOS:日期选择器: Image:图片控件: ListView:列表控件: ...

  7. React Native图片控件的使用

    首先定义组件 import { AppRegistry, StyleSheet, Text, View, Image,} from 'react-native'; 然后将render返回中的模版增加I ...

  8. react-native学习笔记--史上最详细Windows版本搭建安装React Native环境配置

    参考:http://www.lcode.org/react-native/ React native中文网:http://reactnative.cn/docs/0.23/android-setup. ...

  9. windows 7下React Native环境配置

    React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,它可以做到实时热更新 .FaceBook 也号称这们技术是 “Le ...

  10. React Native初探

    前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...

随机推荐

  1. 如何在hadoop上做等频离散化

    抛砖引玉,先根据特征值group by,统计每个特征值出现次数,然后reduce到一个文件,根据一个文件来统计吧,毕竟,你知道多个桶,那么每个桶多少个样本就是确定了,数数,数到一个桶样本的时候停止,就 ...

  2. vue做nav切换

    话不多说,直接上代码. 关键:通过点击来改变thisindex ,又thisinde == index来控制class是否含active来控制样式 简单效果如下:

  3. 微信小程序页面跳转导航wx.navigateTo和wx.redirectTo

    }) wx.redirectTo(OBJECT) 关闭当前页面,跳转到应用内的某个页面. 还是用上面的三张图示作为例子,当使用wx.redirctTo接口跳转页面时,原来的页面将被删除掉,当然,这是小 ...

  4. TCP建立连接三次握手和释放连接四次握手

    TCP建立连接三次握手和释放连接四次握手     [转载]http://blog.csdn.net/guyuealian/article/details/52535294   在谈及TCP建立连接和释 ...

  5. 从零开始 —— Canvas(一)

    从零开始-Canvas 1.颜色.样式和阴影 属性 a.fillStyle(设置或返回用于填充绘画的颜色.渐变或模式) 语法:context.fillStyle = color(颜色值) | grad ...

  6. learning coap protocol

    reference: http://coap.technology/spec.html

  7. Rhino模型制作——京东狗(练习网格切割)

    我最近做了一个京东狗的模型,我先把渲染好的模型给大家看一下. 别看这个模型很复杂,其实京东狗的模型是网上找的,我只是做了一个上面的洞.不过我告诉大家Rhino的下载地址:http://www.xuex ...

  8. python全栈考题 3.30

    1.执行Python 脚本的两种方式 1.>>python ../pyhton.py      2. >>python.py   #必须在首行有 #!/usr/bin/env ...

  9. python中的内置函数getattr()介绍及示例

    在python的官方文档中:getattr()的解释如下: ? 1 2 3 getattr(object, name[, default])   Return the value of the nam ...

  10. C/C++中的预编译指令(转)

    reference:https://blog.csdn.net/sunshinewave/article/details/51020421 程序的编译过程可以分为预处理.编译.汇编三部分,其中预处理是 ...