iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等

简介: iOS蓝牙打印价签:商品条码、品名、零售价、规格信息等

前言

效果

image.png

商品名称支持换行显示,商品条码的高度根据商品名称长度自动调整

关键方法

[command addTextwithX:30 withY:y withFont:@"TSS24.BF2" withRotation:0 withXscal:1 withYscal:1 withText:[NSString stringWithFormat:@"品名:%@",name]];
    // 打印条码
    [command add1DBarcode:30 :y :@"CODE128" :h4add1DBarcode :1 :0 :2 :2 :model.BarCode];
    // 设置打印的份数
    [command addPrint:1 :1];// M 行 n :列 打印两份
    // 打印标签后 蜂鸣器响
    if(model.isaddSound){
        [command addSound:2 :100];
    }

I 、 封装的打印方法

/**
是否发出 蜂鸣器响 saddSound
 新增一个参数设置打印份数
 [command addPrint:1 :1];// M 行 n :列 打印两份
 */
+ (NSData *)price_tscCommand4GoodInfo:(ERPgoodsManListModel4Print*)model{
    TscCommand *command = [[TscCommand alloc]init];
    [command addSize:60 :40];
    [command addGapWithM:2 withN:0];
    [command addReference:0 :0];
    [command addTear:@"ON"];
    [command addQueryPrinterStatus:ON];
    [command addCls];
    CGFloat marg = 10;// 行间距
    CGFloat topY = 15;// 顶部距离
    [command addTextwithX:150 withY:0+topY withFont:@"TSS24.BF2" withRotation:0 withXscal:1 withYscal:1 withText:[UserInfoModel.shareUserInfoModel store].storeName4Printer];// 字的高度30
//    每行显示的中文最大数
    NSInteger lineCharNomaxclos = 14;//列数
    // 允许商品名称显示的最大行数
    NSInteger maxrown = 3;
    //将字符串按按照指定的个数(14)进行分组
    NSMutableArray *parr = [ERPTscCommandTool getStrsSeparatedBylineCharNomaxclos:lineCharNomaxclos maxrown:maxrown ProductNameAndSkuName:model.ProductNameAndSkuName];
    // 设置初始Y
    CGFloat y = 30+marg*2+topY+25*0;
    // 遍历商品名称分割之后的数组进行布局
    for (int i =0; i<parr.count; i++) {
        NSString* name = parr[i];
         y = 30+marg*(i+1)+topY+25*i;
        if(i==0){// 打印商品名称的第一行
            [command addTextwithX:30 withY:y withFont:@"TSS24.BF2" withRotation:0 withXscal:1 withYscal:1 withText:[NSString stringWithFormat:@"品名:%@",name]];
            continue;
        }
        // 打印商品名称的其他行
        [command addTextwithX:30 withY:y withFont:@"TSS24.BF2" withRotation:0 withXscal:1 withYscal:1 withText:[NSString stringWithFormat:@"      %@",name]];
    }
    // 每行显示的内容高度25 + 行间距marg 10
    CGFloat lineH = 25+marg;
    y =  y+lineH;// 设置零售价的Y
    [command addTextwithX:30 withY:y withFont:@"TSS24.BF2" withRotation:0 withXscal:1 withYscal:1 withText:[NSString stringWithFormat:@"售价:%@元/%@",[QCT_Common getAmountStr:model.SysPrice],model.unitName]];
    y =  y+lineH;// 设置条码的Y
    CGFloat h4add1DBarcode = 170 - parr.count*35;
    // 打印条码
    [command add1DBarcode:30 :y :@"CODE128" :h4add1DBarcode :1 :0 :2 :2 :model.BarCode];
    // 设置打印的份数
    [command addPrint:1 :1];// M 行 n :列 打印两份
    // 打印标签后 蜂鸣器响
    if(model.isaddSound){
        [command addSound:2 :100];
    }
    return [command getCommand];
}

II、打印的数据模型定义

@interface ERPgoodsManListModel4Print : NSObject
/**
 getProductName第一层,getProductSkuName数组里的
 */
@property (nonatomic,copy) NSString *ProductNameAndSkuName;
/**
 "售价:" + AmountUtils.getCommaAmount(productSkusBean.getSysPrice()) + context.getString(R.string.yuan) + "/" + productSkusBean.getUnitName() + "\n");
 */
@property (nonatomic,copy) NSString *SysPrice;
/**
 BarCode
 */
@property (nonatomic,copy) NSString *BarCode;
@property (nonatomic,copy) NSString *unitName;
/**
 默认不发出,只有最后一个菜发出声音
 */
@property (nonatomic,assign) BOOL  isaddSound;
+(NSMutableArray*)getERPgoodsManListModel4PrintWithQCTgoodsManListModel:(id)goodsManListModel;

III、工具方法(将字符串按按照指定的个数(14)进行分组

  • 声明
/**
 lineCharNomaxclos : 每行显示最大中文个数
 maxrown: 控制显示的最大行数量
 ProductNameAndSkuName: 显示的内容
 */
+ (NSMutableArray*) getStrsSeparatedBylineCharNomaxclos:(NSInteger)lineCharNomaxclos maxrown:(NSInteger)maxrown ProductNameAndSkuName:(NSString*)ProductNameAndSkuName;
  • 使用
//将字符串按按照指定的个数(14)进行分组
    NSMutableArray *parr = [ERPTscCommandTool getStrsSeparatedBylineCharNomaxclos:lineCharNomaxclos maxrown:maxrown ProductNameAndSkuName:model.ProductNameAndSkuName];
  • 实现
/**
 lineCharNomaxclos : 每行显示最大中文个数
 maxrown: 控制显示的最大行数量
 ProductNameAndSkuName: 显示的内容
 */
+ (NSMutableArray*) getStrsSeparatedBylineCharNomaxclos:(NSInteger)lineCharNomaxclos maxrown:(NSInteger)maxrown ProductNameAndSkuName:(NSString*)ProductNameAndSkuName{
       //计算商品名称字符串的需要显示的总行数
       NSInteger rown = (ProductNameAndSkuName.length-1)/lineCharNomaxclos ;//
       NSMutableArray *parr =[NSMutableArray array];
       for (int i =0; i<=rown; i++) {
           if(i>=maxrown){// 控制显示的最大行数量
               break ;
           }
           CGFloat len = lineCharNomaxclos;
           if((lineCharNomaxclos*i+len) >ProductNameAndSkuName.length){
               len = ProductNameAndSkuName.length-lineCharNomaxclos*i;
           }else{
           }
           NSString *tmp =  [ProductNameAndSkuName substringWithRange:NSMakeRange(lineCharNomaxclos*i, len)];
           [parr addObject:tmp];
       }
    return parr;
}

see also

目录
相关文章
|
3月前
|
定位技术 iOS开发
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
iOS设备功能和框架: 如何使用 Core Location 获取设备的位置信息?
19 0
|
3月前
|
存储 Linux iOS开发
iOS 技术博主指南:填写苹果应用上架中的隐私政策信息
iOS 技术博主指南:填写苹果应用上架中的隐私政策信息
|
7月前
|
小程序 JavaScript API
支付宝微信小程序连接蓝牙兼容IOS和安卓(开源)
支付宝微信小程序连接蓝牙兼容IOS和安卓(开源)
93 0
|
10月前
|
小程序 Android开发 iOS开发
微信小程序连接蓝牙工具类支持IOS和安卓
微信小程序连接蓝牙工具类支持IOS和安卓
159 0
|
移动开发 前端开发 JavaScript
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
1、Uni-app介绍 2、Uni-app优点 3、BLE开发流程
IOS开发:UniAPP实现BLE低功耗蓝牙开发1
|
开发工具 iOS开发 git
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
171 0
iOS开发 - 类似美团选商品页,从按钮上往上滑动,tableview依然响应,点击按钮,按钮也可响应
|
Android开发 iOS开发
iOS开发 - 商品详情页两种分页模式,只提供思路和实现方式。
iOS开发 - 商品详情页两种分页模式,只提供思路和实现方式。
354 0
iOS开发 - 商品详情页两种分页模式,只提供思路和实现方式。
|
物联网 Android开发 iOS开发
iOS开发 - 蓝牙学习的总结
iOS开发 - 蓝牙学习的总结
129 0
|
移动开发 文字识别 开发工具
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)
1. 功能:扫描银行卡识别信息( 银行名称、 银行卡号)并截取银行卡图像 2. 应用场景:快速填充银行卡号的场景,比如商户进件、实名认证
329 0
iOS小技能: OCR 之银行卡/身份证信息识别(免费次数无限)