使用组件
Interop.BarTender.dll
提取码:2bxq
打印情况一:
如果打印次数不频繁,一次只是打印一个模板,前端可以进行直接获取到数据的情况,并且打印纸张是一行一列的,如:A4纸张单据打印。可以使用这种简单的方式:
private void btnPrint_Click(object sender, EventArgs e) { BarTender.Application btapp; BarTender.Format btformat; btapp = new BarTender.Application(); string str = $"{Application.StartupPath}\\model.btw";//程序目录下 btformat = btapp.Formats.Open(str, false, ""); btformat.SetNamedSubStringValue("Var1", "内容数据1");//条码 btformat.SetNamedSubStringValue("Var2", "内容数据2");//底部 btformat.PrintOut(false, false); //第二个参数设置是否跳出打印属性; btapp.Quit(BarTender.BtSaveOptions.btSaveChanges);//退出时同步退出bartender进程 }
模板例子设置如下:
打印情况二:
如果打印是批量、多排的,如:产品条码条码打印。使用连接数据库方式打印。这里使用SQLSerer方式连接例子
public void btnPrint_Click(bool UpdatePrintState) { #region 设置临时打印数据源 string printId = Guid.NewGuid().ToString("N");//打印批次标记 //情况一:创建一个临时打印表,把数据插入到临时表 //情况二:直接根据条件去数据库查询(不需要重新创建数据) #endregion #region 通过barTender模板来打印 BarTender.Application btapp; BarTender.Format btformat; btapp = new BarTender.Application(); string str = $"{Application.StartupPath}\\model2.btw";//程序目录下 btformat = btapp.Formats.Open(str, false, ""); BarTender.Database database = btformat.Databases.GetDatabase(1); database.SQLStatement += $" where printID='{printId}' order by RIGHT(Var1,7)";//填写SQL语句附加条件 database.Password = VSLoginInfo.SQLPassword; database.User = VSLoginInfo.SQLUser; btformat.PrintOut(false, checkBox1.Checked); //第二个参数设置是否跳出打印属性; btapp.Quit(BarTender.BtSaveOptions.btDoNotSaveChanges);//退出时同步退出bartender进程(SQL条件会改变,不更新模板信息) #endregion }
模板例子设置如下: