• C#调用bartender进行动态打印以及批量打印的完整教程


    信息化过程中难免接触到标签打印机,bartender是一款功能齐全的设计打印软件,可以设计标签模板内容,手动打印或者对接程序进行动态打印。应网友要求,出一个较为详细的教程。

    一、bartender软件安装

            这个就不用多说了,自行网上下载安装,建议专业版或者企业版。

    二、标签模板设计

            1.单个打印模板设计:

    标签内容的动态值key设置,这个是我们动态调用时需要对应的。如图。这里我定义了一个二维码和一个文本为例。

    先来设定单个打印的模板,这里设置数据源的名称就是单个打印的动态key了,后面在打印的时候会用到。

    2.批量打印模板设计

    批量打印的话这里以文本数据的模式为例因为比较简单。如图先设置数据库数据源

    根据向导下一步选择

    文本文件。

    编码注意选择UTF8不然中文会乱码。

    文本文件内容如图,两列,列用引号框起来,多列逗号分割。

     

     

    勾选第一行是列标题。完成后确定就可以刷新字段名。

     下一步就是关联我们的模板中对应组件。

    选择我们的数据库字段,进行字段的关联如图。

     另一个字段数量也是一样。

    到这里批量打印的模板就设计好了。

     我这里的版本是bartender10.1

    三、动态库引入

    来到visualStudio中进行动态库引入。右键添加引入DLL。

    四、使用封装好的打印方法,打印测试。

    我们改成PDF打印输出来看看效果。

    调用稍微有点耗时,不过问题不大。

    批量打印的效果如下。

     ///


            /// 单个打印
            ///

            ///
            ///
            private void BtnSinglePrint_Click(object sender, EventArgs e)
            {
                BartenderHelper bartenderHelper = new BartenderHelper();
                string printMsg = "";// 打印结果消息
                Dictionary data = new Dictionary(); //打印内容
                var dataArray = TxtSingleContent.Text.Split(",");
                if (dataArray.Length < 1) {
                    MessageBox.Show("fail:格式不对");
                    return;
                }
                // 组装内容
                data.Add("Code",dataArray[0]);
                data.Add("Qty", dataArray[1]);
                string bartenderFilePath =$@"{Environment.CurrentDirectory}//模板//test.btw";//模板路径
                var isOk = bartenderHelper.BTPrint(bartenderFilePath, data, out printMsg);
                if (!isOk) {
                    MessageBox.Show("fail:"+printMsg);
                }
            }

            ///


            /// 批量打印
            ///

            ///
            ///
            private void BtnBatchPrint_Click(object sender, EventArgs e)
            {
                BartenderHelper bartenderHelper = new BartenderHelper();
                var lines = TxtBatchContent.Lines;
                if (lines.Count() < 1) {
                    MessageBox.Show("fail:数据内容不对" );
                    return;
                }
                // 生成文本数据
                string fileName = $@"printData_{Guid.NewGuid()}";// 文件名
                List dataList = new List();
                string title = "\"Code\",\"Qty\""; //列名
                dataList.Add(title);
                for (int i = 0; i < lines.Count(); i++) {
                    var lineArr = lines[i].Split(',');
                    if (lineArr.Count() < 1)
                    {
                        MessageBox.Show("fail:数据内容不对");
                        return;
                    }
                    dataList.Add($"\"{lineArr[0]}\",\"{lineArr[1]}\"");
                }
                fileName = WriteLog(dataList,"printData", fileName);

                string bartenderFilePath = $@"{Environment.CurrentDirectory}//模板//batchTest.btw";//模板路径
                var isOk = bartenderHelper.BTPrintByDataBase(bartenderFilePath, fileName);
                if (!isOk)
                {
                    MessageBox.Show("fail:");
                }
            }

    五、简单源码开放

    遇到打印有问题的话,最好管理员权限运行,bartender的打印需要管理员权限。

    bartender使用完整案例

  • 相关阅读:
    kubernetes pod抓包
    docker部署ETC(以太经典)主网链
    后端SpringBoot+前端Vue前后端分离的项目(一)
    设计模式-12外观模式(外观设计模式)详解
    什么蓝牙耳机听歌好?听歌音质好的蓝牙耳机推荐
    推荐2款开源、美观的WinForm UI控件库
    OSPF —— OSPF邻居状态机(工作机制 )
    RoundingMode 几个参数详解
    go语言并发实战——日志收集系统(七) etcd的介绍与简单使用
    <Python>PyQt5,多窗口之间参数传递和函数调用
  • 原文地址:https://blog.csdn.net/u011540323/article/details/126193848