近期公司导入一个新项目,需要用到通过程序管理标签信息并能及时的打印出来。
公司硬件环境: PC、Sato标签打印机
软件环境: Win7 32Bit
开发环境: VS2010 32Bit
通过查看Label Gallery技术文件,发现可以通过ActiveX与DDL的方式分别编写WEB或C/S程序来调用标签模板并访问模板内的变量,然后打印。
但使用VS2010开发时需要使用到Label Gallery软件提供的一个DLL文件。
PS: 在Label Gallery 3 的版本中DLL叫 LabelGalleryPlus3WR.dll,(这个DLL在Label Gallery 3的安装目录内可以找到,与程序EXE在一个目录内)
技术说明文件内介绍的DLL名称是LabelGalleryPlus2WR.dll,不知道是不是因为是之前的版本,这里就不管它了。
需要说明的是技术文件内是需要导入LabelGalleryPlus3WR.dll这个文件,可是我下载到的官方DEMO内却导入是LabelGalleryEngine3WR.dll这个DLL文件。
如果想使用LabelGalleryPlus3WR.dll,不想去再另外下载的,也可以直接引用LabelGalleryPlus3WR.dll。
LabelGalleryEngine3WR.dll文件是一个DEMO程序内包含的,DOMO程序下载地址:
http://www.satoworldwide.com/sites/satoworldwide_com/Uploads/Files/LabelGallery/LabelGallery_IntegrationPack3.zip
PS:添加DLL引用时,可以系统会报错,无法引用 ,这个时候请先使用Regsvr32 进行DLL注册,然后再引用DLL即可。
引用成功后,具体的实现代码如下(只是一个测试程序,所以没有太复杂的处理):
if (txtOpenFile.Text.Trim() == "") //标签模板文件
{
MessageBox.Show("Please Select file!");
return;
}
LGApp objApp= new LGApp() ; //实例化读取标签的对象
LGLabel ObjLabel = objApp.LabelOpenEx(txtOpenFile.Text); //读取标签
try
{
if (txtVar1.Text.Trim() != "" && txtVarValue1.Text.Trim() != "") //根据情况给标签内的变量赋值 txtVar1代表变量名 txtVar1Value代表变更值
{
ObjLabel.Variables.FindByName(txtVar1.Text.Trim()).SetValue(txtVarValue1.Text.Trim());
}
}
catch
{
MessageBox.Show("Variable1 name Or Variable1 value is invalid");
}
try
{
if (txtVar2.Text.Trim() != "" && txtVarValue2.Text.Trim() != "") //根据情况给标签内的变量赋值 txtVar2代表变量名 txtVar2Value代表变更值
{
ObjLabel.Variables.FindByName(txtVar2.Text.Trim()).SetValue(txtVarValue2.Text.Trim());
}
}
catch
{
MessageBox.Show("Variable2 name Or Variable2 value is invalid");
}
int PrintQty;
try
{
PrintQty = int.Parse(txtQuantity.Text);
}
catch {
PrintQty = 0;
}
if (PrintQty > 0)
{
ObjLabel.Print(txtQuantity.Text); //打印 传入打印的数量
objApp.LabelClose(0); //关闭引用
}