环境:Windows 10,Visual Studio 2017,ASP.NET Mvc,CodeSoft 2018
写在前面:
1、需要安装CodeSoft,可以试用一个月或者100次,版本自己看着办。
2、需要引入Interop.LabelManager2、Interop.TkxRFTAG。
如果报错,需要改一下dll的[嵌入互操作类型]。
一开接触这个东西的时候,百度一下出来的结果还挺多的,代码也很简单,以为很容易搞定就没留意,然而。。。。。。
事情并没有那么顺利。。。
问题就出在给Label模板的变量赋值上。。。
网上很多人说的[自由变量],在代码实际操作中找不到,报空引用。。。
实际要选择的变量类型是[表单](不同的CodeSoft版本叫法可能不一样)。
下面说一下具体流程:
1、Label模板制作:不说那些具体操作,只是单纯想说一下那个变量的问题,就是在C#里面通过他把数据写入模板的。在操作界面左下角有一个对象窗口,里面有很多类型的对象(如:文本、图片、条形码等),选中具体对象 右键→属性,属性面板可以看到一个数据源选项,在变量右边选择新建数据源→选择[表单],进去变量面板可以输入变量名(Var0)和值,这个变量名就是可以在C#中给他赋值的变量。
2、C#打印标签:
a、利用LabelManager2.ApplicationClass打开Label模板。
b、根据之前创建的变量名,写入数据到Label模板。
c、调用doc.PrintDocument(1)打印标签,参数是打印标签的数量。
public void Print(string para1, string para2)
{
ApplicationClass lbl = new ApplicationClass();
try
{
lbl.Documents.Open(@"D:\label.Lab", false);// 调用设计好的label文件
Document doc = lbl.ActiveDocument;
doc.Variables.FormVariables.Item("Var0").Value = para1; //给参数传值
doc.Variables.FormVariables.Item("Var1").Value = para2; //给参数传值
doc.PrintDocument(1); //打印
}
catch (Exception ex)
{
throw ex;
}
finally
{
lbl.Quit(); //退出
}
}