zoukankan      html  css  js  c++  java
  • 调用Bartender服务并打印bartender标签

    通常大部分企业在生产,仓储,QC等运作环节会用到标签,标签上有些各种标识。 
    一般的企业都有配有标签软件+专用的标签打印机。此例以bartender为例子。 
    如果为了实现打印条码,或者显示具体的功能,用CR,FR等都可以实现。但这些报表工具毕竟不是专业的标签软件。 
    好兄弟大牛超哥分享了一个delphi写的源码,可惜我不会delphi也就没有IDE环境去看源码,就想C#写一个类似的功能: 
    大概的思路:调用Bartender服务并打印bartender标签 
    (1)下载Bartender的SDK,直接引用了(也没有研究SDK,偷懒。。。) 
    (2)安装bartender的软件,并制作标签作为测试用,本例:合格证。 
    (3)代码实现 
    程序界面: 
    这里写图片描述 
    制作标签: 
    这里写图片描述

    代码如下(其中一个标签类型的代码,其他省略):
        public partial class FrmQC : Form
        {
            public FrmQC()
            {
                InitializeComponent();
            }
            BarTender.Application btApp;
            BarTender.Format btFormat;
    
    
            private void Form1_Load(object sender, EventArgs e)
            {
                btApp = new BarTender.Application();
                this.num2.Value = 1;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                int a = Int32.Parse(this.num2.Value.ToString());//设置打印数量的变量
                if (this.txtItem.Text.Length == 0 )
                {
                    MessageBox.Show("未输入料号");
                }
                else
                {
                    btFormat = btApp.Formats.Open(@"C:BarTenderFiles合格证", false, "");
                    btFormat.PrintSetup.IdenticalCopiesOfLabel = 1;  //设置同序列打印的份数
                    btFormat.PrintSetup.NumberSerializedLabels = a;  //设置需要打印的序列数
                    btFormat.SetNamedSubStringValue("品号", this.txtItem.Text); //向bartender模板传递变量
                    btFormat.SetNamedSubStringValue("品名", this.txtName.Text); //向bartender模板传递变量
                    btFormat.SetNamedSubStringValue("规格", this.txtDesc.Text); //向bartender模板传递变量
                    btFormat.SetNamedSubStringValue("批号", this.txtPici.Text); //向bartender模板传递变量
                    btFormat.SetNamedSubStringValue("日期", System.DateTime.Now.Year + "." + System.DateTime.Now.Month + "." + System.DateTime.Now.Day ); //向bartender模板传递变量
                    btFormat.SetNamedSubStringValue("月份", System.DateTime.Now.Month + "月份"); //向bartender模板传递变量
                    btFormat.SetNamedSubStringValue("月",  System.DateTime.Now.Month.ToString()); //向bartender模板传递变量
    
    
                    btFormat.PrintOut(true, true); //第二个false设置打印时是否跳出打印属性
                    btFormat.Close(BarTender.BtSaveOptions.btSaveChanges); //退出时是否保存标签
    
    
    
                }
            }
            private void Form1_FormClosed(object sender, FormClosedEventArgs e)
            {
                btApp.Quit(BarTender.BtSaveOptions.btSaveChanges);//界面退出时同步退出bartender进程
            }
        }

    由于没有测试环境没有连接TSC标签打印机,普通打印机A4纸张输出结果: 
    这里写图片描述

    注意:标签模板变量需设置成共享名。 
    否则会遇到这样的问题: 
    红色字体部分报错 [System.Runtime.InteropServices.COMException] = {“已命名子字串 Name 未在已命名子字串列表中找到。”}求解决办法

  • 相关阅读:
    产品思维和用户思维
    IT界是丽春院?
    凡事要讲究方式方法
    一个比较差的接口定义
    软件开发中的官话和土话
    Frida之app逆向hook,动态插装
    Airtext远程控制多台手机
    linux下使用uwsgi部署flask写的接口遇到的坑
    软件质量管理(六)- 无有规矩不成方圆
    软件质量管理(五)- 质量优异的产品离不开一支优秀的团队
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/6763171.html
Copyright © 2011-2022 走看看