有关于APICLOUD打印条码功能的操作

最近公司要求一周写一个关于条码扫描和打印功能的APP,然后对接系统数据,然而,公司只有我一个可以做的,我只能取巧开发了,于是在APPCAN和APICLOUD中选择了后者,别问我为啥,问了就是,后者开发舒服

关于条码扫描,我选了一个FNScanner,这个用来扫描还是挺好的,速度也不慢。开始上一个扫描的代码

	FNScanner = api.require('FNScanner');
    FNScanner.open({
        autorotation: true
    }, function(ret, err) {
        if (ret.content) {
//介个地方就是判断,如果扫到条码或者二维码了,你就可以放心大胆的用你扫到的东西去做你想做的事情了,嘿嘿嘿,不要慌,有时候也会因为条码不完整导致扫到的是什么鬼……ret.content这个值就是你要的玩意
		}
    });

然后扫描的功能就这样了,核心代码很少,记住,这个扫描模块是需要你先添加这个模块到你的项目中才能生效的,别哈戳戳的直接去写,然后过来问我,为啥提示报错,undefined!!我会敲断你的腿还会叫人砸你家玻璃的!!

然后第二步,就是解决打印条码功能,和生成条码功能了

要求:1、根据字符串生成对应的条码
2、输入数值,点击打印,则打印出对应数量的条码

话不多说,开工
生成条码我选择了printBleWifi模块的getBarCode方法,这玩意可以返回一个base64格式的一维码代码

var print = api.require('printBleWifi');
		print.getBarCode({string:fnsku},function(ret, err) {
		 if (ret.code==0) {
		 	var base64 = ret.base64;//介玩意就是那一串base64的字符串啦,慢慢搞哈,不要急
		} else {
		 	alert('获取失败');
		 }
	 });

到了这一步,有人就要急了,我怎么打印呢,我打印纸和你的又不一样,怎么玩

我这个打印纸是一排两列的那种,总长度是83mm左右,高度是20mm,每行间隔是2mm,然后,中间间隔1-2mm,毕竟供货的哈麻皮公司生产也会有误差的,我用的打印模块是posPrinter,废话不多说,上代码

var printModule = api.require('posPrinter');
			var param =
			{
			    taskList:
			    [
			        {
			            printerAddr: printid,
			            type:2,
			            tscSetting:{
			                width:86,
			                height:20,
			                gap:2
			            },
			            content:'<img left="-30" top="-20">'+base64+'</img><img left="306" top="-20">'+base64+'</img>'
									+'<text size="16" center="1" left="-160" bold="true" top="98">'+sku+'</text>'
									+'<text size="16" center="1" left="176" bold="true" top="98">'+sku+'</text>'//指的是打印机左边的,越大越往右偏移
									+'<text size="16" center="1" left="-150" bold="true" top="112">DO  NOT  RELABEL!  PLEASE!</text>'
									+'<text size="16" center="1" left="175" bold="true" top="112">DO  NOT  RELABEL!  PLEASE!</text>'
									+'<text size="14" center="1" left="-75" bold="true" top="128">'+getdates()+'</text>'
									+'<text size="14" center="1" left="255" bold="true" top="128">'+getdates()+'</text>',
			            //<qr>标签表示打印二维码
			            //tagContent里面所有标签都支持旋转属性,如rotate="45"表示旋转45度
			            //text标签可以使用center="1"表示居中,如果居中时,设置left="-10",表示居中后,再往左偏移10
			            keepAlive:true,       //usb或者蓝牙打印机,建议把keepAlive设为true,在打印完毕后执行关闭操作
			            copyNum: num
			        }
			    ]
			};
			// alert(num);
			printModule.print(param, function (ret, err) {
				if(ret!=''&&ret!=undefined){
					console.info(JSON.stringify(ret));
					alert('打印'+ret.result);
				}else{
					console.info(JSON.stringify(err));
					alert('打印机未连接或者正在被占用,请连接其他打印设备或稍后再试');
				}

			});

搞到这里就差不多了,反正我是被逼着写这个功能的,上面3个模块,有2个是要钱的,还不便宜,如果只是公司内部使用,我推荐你用测试版本玩玩就好了,等大家都习惯了,再去缴费升级正式版本,别想着不给钱,人家也难做,安啦

最后,还是告诉大家,学无止境,多勤多习……我是一个JAVA全栈开发攻城狮,我为自己带盐,齁死我了,拜拜

发布了5 篇原创文章 · 获赞 0 · 访问量 1964

猜你喜欢

转载自blog.csdn.net/weixin_41880919/article/details/104993865