这几天遇到一个需求,标签打印完成并且要输出图片,以便实现追溯。
老规矩,先说下工具和环境。
首先,Bartender版本如下
其次,标签模板文件使用的是数据库字段赋值方式(这里就隐藏了一个坑)。
如果是使用具名数据源的话,那就好办。(后面也会附这种参数类型如何输出图片)
接下来看一下C#调用Bartender的打印代码
private void Print()//打印标签,如果有错误则输出Bartender报出的错误信息
{
//_btFormat.PrintOut(false, false);
BarTender.Messages btMessages;
BarTender.BtPrintResult btResult;
_btFormat.PrintSetup.IdenticalCopiesOfLabel = 1;
_btFormat.PrintSetup.NumberSerializedLabels = 1;
btResult = _btFormat.Print("", false, -1, out btMessages);
BarTender.Messages btMessages2;
_btFormat.ExportPrintPreviewToImage(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test123.jpg", "jpg", BarTender.BtColors.btColors24Bit, 1500, 0,
BarTender.BtSaveOptions.btDoNotSaveChanges, true, true, out btMessages2);
}
■使用数据库的方式传参的话,必须要使用ExportPrintPreviewToImage来输出图片。如果是使用网上其他博客说的ExportToFile来输出图片的话,输出的图片里面的变量是不会变的(也就是不管你的数据库传值是什么,数出来的图片的内容都是模板的默认值,不会根据传入的参数改变而改变)。
ExportPrintPreviewToImage的第一个参数是输出的路径,第二个参数是文件名称,第三个参数是文件类型,第四个参数选择btColors24Bit,第五个参数是图片的大小,第六个参数是背景色(0是黑色),第七个参数是不保存变更,第八个参数是否包含边缘、第九个参数是否包含边框,第十个参数是输出参数。
下面是打印出来的样式。因为我的背景色用的是0,所以是黑色的。
■如果是使用具名数据源的话,那么就可以直接使用ExportToFile函数来输出图片。
public static void LableToImage(string btFileName)
{
BarTender.Application btApp = new BarTender.Application();
BarTender.Format _btFormat;
BarTender.Messages btMessages;
_btFormat = btApp.Formats.Open(btFileName);
//传入参数赋值
_btFormat.SetNamedSubStringValue("具名数据源参数名", "值");
//打印
_btFormat.PrintSetup.IdenticalCopiesOfLabel = 1;
_btFormat.PrintSetup.NumberSerializedLabels = 1;
_btFormat.Print("", false, -1, out btMessages);
//输出图片
_btFormat.ExportToFile("保存文件名", "jpg", BarTender.BtColors.btColors24Bit, BarTender.BtResolution.btResolutionPrinter, BarTender.BtSaveOptions.btSaveChanges);
_btFormat.Close(BarTender.BtSaveOptions.btSaveChanges);
btApp.Quit(BarTender.BtSaveOptions.btSaveChanges);
}