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

目录
相关文章
|
iOS开发
iOS蓝牙打印商品价格标签的模板及打印交易小票的模版
iOS蓝牙打印商品价格标签的模板及打印交易小票的模版
286 0
iOS蓝牙打印商品价格标签的模板及打印交易小票的模版
|
缓存 iOS开发 Perl
iOS蓝牙打印小票(打印发票二维码的指令)
iOS蓝牙打印小票(打印发票二维码的指令)
606 0
iOS蓝牙打印小票(打印发票二维码的指令)
|
Android开发
获取手机信息
引用:http://blog.csdn.net/gumanren/article/details/6209237 核心代码: Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).
1158 0
|
JSON 小程序 前端开发
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
867 0
微信小程序接入NFC,使用HCE模拟主机卡完成NFC刷卡发送消息
|
iOS开发
iOS 获取手机中SIM卡数量
iOS 获取手机中SIM卡数量
266 0
|
物联网 Android开发 生物认证
|
JSON 数据格式
365小票打印机打印接口开发文档
API开发文档     接口1:打印内容 参数 说明 deviceNo 打印机编号 key 密钥 printContent 打印内容 times 固定传1 调用方式:HTTP POSTURL:http://open.
3153 0

热门文章

最新文章