1. 程式人生 > >[C#]呼叫Bartender服務並列印bartender標籤

[C#]呼叫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 未在已命名子字串列表中找到。”}求解決辦法