BarTender 要用企业版,才能动态指定数据
BarTender.Application btApp= new BarTender.Application(); //初始化需要5秒 var btw = GlobalVariable.btApp.Formats.Open(Application.StartupPath + "\\aaa.btw"); btw.SetNamedSubStringValue("PackCnt", lblOKCnt.Text); btw.SetNamedSubStringValue("ProdLine", tslProdLine.Text); btw.SetNamedSubStringValue("Material", tslMaterial.Text); btw.SetNamedSubStringValue("Customer", lblCustomer.Text); string strQRCode=tslProdLine.Text + "|" + tslBanCi.Text + "|" + GlobalVariable.UserName.ToUpper() + "|" + tslMaterial.Text + "|" + DateTime.Now.ToString("yyyyMMdd") + "|" + (CurrentLayer+1).ToString("00"); btw.SetNamedSubStringValue("strQRCode", strQRCode); BarTender.Messages barTenderMsg; btw.Print("aaa",true,2000,out barTenderMsg);
Bartender第一次启动太慢
用FastReport 也要用破解版才行, github开源的是一个设计器,没有打印功能的.
private bool FastReportPrint() { try { //创建Report对象 var report = new Report(); //获得模板的路径 string reportLabel = Application.StartupPath + @"\" + "ndk.frx"; //判断文件是否存在 if (!File.Exists(reportLabel)) { MessageBox.Show("标签模板不存在!请先获取标签模板!"); } //清空 report.Clear(); //加载报表模板 report.Load(reportLabel); //获取模板中,对应的TextObject节点-替换模板内容 string strQRCode = tslProdLine.Text + "|" + tslBanCi.Text + "|" + GlobalVariable.UserName.ToUpper() + "|" + tslMaterial.Text + "|" + DateTime.Now.ToString("yyyyMMdd") + "|" + (CurrentLayer + 1).ToString("00"); //实际数据模型 var model = new { PackCnt = lblOKCnt.Text, PackUser = GlobalVariable.UserName, PackTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ProdLine = tslProdLine.Text, Material = tslMaterial.Text, Customer = lblCustomer.Text, strQRCode = strQRCode }; var list = model.GetType().GetProperties(); //批量设置打印模板参数值 foreach (PropertyInfo pro in list) { var value = pro.GetValue(model, null); //获取参数 FastReport.Data.Parameter param = report.Parameters.FindByName(pro.Name); if (param != null) { param.Value = value; //将属性的值赋值给名字相同的报表参数 } } var qr = report.FindObject("Barcode1") as BarcodeObject; qr.Text = strQRCode; //关闭生成进度条 EnvironmentSettings eSet = new EnvironmentSettings(); eSet.ReportSettings.ShowProgress = false; //关闭对话框 report.PrintSettings.ShowDialog = false; //运行报表 report.Prepare(); string strPrintName = GlobalVariable.PrinterName; report.PrintSettings.Printer = strPrintName;//"Microsoft XPS Document Writer";//设置打印机 // 运行报表打印 report.Print(); // 释放使用的资源 report.Dispose(); ////获取打印机的名称,这里是通过封装的方法去获取打印机名,这里可以直接指定“打印机名称”; //string strPrintName = GlobalVariable.PrinterName; //if (string.IsNullOrWhiteSpace(strPrintName)) //{ // MessageBox.Show("未设置打印机!"); // return false; //} } catch (Exception) { return false; } return true; }