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. Loadrunner11中webservice协议脚本总结

    Loadrunner11中webservice协议脚本总结 简介     webservices协议是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接,其中最基 ...

  2. Oracle通用维、父子维相互转换

    所谓通用维即维度层级1.2.3均作为字段展示为列,父子维即维度id+父级维度+维度层级字段 通用维 lvl_id1 lvl_name1 lvl_id2 lvl_name2 lvl_id3 lvl_na ...

  3. 在CentOS 7 上设置返回上一级目录的快捷键为 Backspace

    参考这里. 编辑文件: $ vi ~/.config/nautilus/accels 找到这一行:  ; (gtk_accel_path "<Actions>/ShellActi ...

  4. Vue.js学习过程

    打开各大论坛,看到好多Vue.js的话题,可以说现在是非常火的框架,看到一个人这样评论Vue:“Vue.js兼容angular.js和 react.js的优点,并剔除他们的缺点.”因为现在公司不用Vu ...

  5. MySql数据库通过idb和frm恢复

    简单粗暴 恢复user表 1.先建立和之前user表一样的表结构.就是执行create table user .... ,执行完,数据库目录下就会建立user.ibd文件(当然还有其他的) 2.执行 ...

  6. 封装一个redis操作类来操作hash格式

    最近项目要用redis,依然是基于tp3.2. 发现thinkphp3.2自带的缓存类并不好使用,就自己封装了一个 目前只支持hash格式,其他数据类型的操作后面用到的时候再补充 <?php / ...

  7. CSS3绘制特殊图形

  8. go ethereum源码分析 PartIV Transaction相关

    核心数据结构: core.types.transaction.go type Transaction struct { data txdata // caches hash atomic.Value ...

  9. 关于WinSock编程的多线程控制

    1引言Windows Sockets规范以U.C. Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Microsoft Windows下网络编程接口.它不仅包含了人们所熟悉 ...

  10. ImportError: No module named _tkinter, please install the python-tk package ubuntu运行tkinter错误

    这是由于Python的版本没有包含tkinter的模块,只需要把tk的package安装就可以了. 一般在Linux才出现,windows版本一般已经包含了tkinter模块. apt-get ins ...