之前公司标签一直用ZPL开发,前段时间公司购买了bartender软件用于标签设计。功能大大的,没得说。废话少说了,进入正题。
需求:标签模板已经设计好,设计个简单程序调用该标签模板并打印。(标签变量通过程序传递)
以下为简单写的winform打印程序
程序界面:
代码如下(其中一个标签类型的代码,其他省略):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace CS_label_Print { public partial class BOX_Label : Form { public BOX_Label() { InitializeComponent(); } BarTender.Application btApp; BarTender.Format btFormat; private void btn2_Click(object sender, EventArgs e) { int a = Int32.Parse(this.num2.Value.ToString());//设置打印数量的变量 if (this.TXT3.Text.Length == 0 || this.TXT4.Text.Length == 0) { MessageBox.Show("未输入料号或者QTY"); } else { btFormat = btApp.Formats.Open(@"c:\BarTenderFiles\CS\CS_Package Label", false, ""); btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; //设置同序列打印的份数 btFormat.PrintSetup.NumberSerializedLabels = a; //设置需要打印的序列数 btFormat.SetNamedSubStringValue("SN", this.TXT3.Text); //向bartender模板传递变量 btFormat.SetNamedSubStringValue("QTY", this.TXT4.Text); btFormat.PrintOut(false, false); //第二个false设置打印时是否跳出打印属性 btFormat.Close(BarTender.BtSaveOptions.btSaveChanges); //退出时是否保存标签 } } private void BOX_Label_Load(object sender, EventArgs e) { btApp = new BarTender.Application(); this.num2.Value = 1; } private void BOX_Label_FormClosed(object sender, FormClosedEventArgs e) { btApp.Quit(BarTender.BtSaveOptions.btSaveChanges);//界面退出时同步退出bartender进程 } } }