C 调用Bartender服务并打印bartender标签

本文介绍了如何使用 C# 调用 Bartender 的 SDK 来实现标签打印功能。首先,下载 Bartender SDK 并直接引用,然后在 Bartender 中制作标签模板。程序界面简洁,但在没有专业标签打印机的情况下,使用普通打印机进行测试,需要注意标签模板变量需设置为共享名,否则可能出现错误。此外,文章还分享了作者的人工智能教程资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                       

通常大部分企业在生产,仓储,QC等运作环节会用到标签,标签上有些各种标识。
    一般的企业都有配有标签软件+专用的标签打印机。此例以bartender为例子。
    如果为了实现打印条码,或者显示具体的功能,用CR,FR等都可以实现。但这些报表工具毕竟不是专业的标签软件。
    好兄弟大牛超哥分享了一个delphi写的源码,可惜我不会delphi也就没有IDE环境去看源码,就想C#写一个类似的功能:
    大概的思路:调用Bartender服务并打印bartender标签
(1)下载Bartender的SDK,直接引用了(也没有研究SDK,偷懒。。。)
(2)安装bartender的软件,并制作标签作为测试用,本例:合格证。
(3)代码实现
程序界面:
这里写图片描述
制作标签:
这里写图片描述

代码如下(其中一个标签类型的代码,其他省略):    public partial class FrmQC : Form    {        public FrmQC()        {            InitializeComponent();        }        BarTender.Application btApp;        BarTender.Format btFormat;        private void Form1_Load(object sender, EventArgs e)        {            btApp = new BarTender.
<think>我们正在使用C#调用BarTender打印标签。根据引用[1][2][3][4],关键步骤包括:1.创建BarTender应用程序对象(Application)或引擎(Engine)。2.打开标签模板文件(.btw格式)。3.设置打印参数(如份数、序列标签数)。4.通过具名子字符串(NamedSubString)设置标签上的变量值(包括文本、条码、图片等)。5.执行打印(PrintOut)。6.关闭标签模板并退出BarTender应用程序(或引擎)。注意问题:-引用[4]指出:标签模板中的变量必须设置为“共享名”,否则在设置具名子字符串时会找不到。-引用[3]演示了如何设置图片:通过SetNamedSubStringValue传递图片文件名(注意:模板中需要设置图片对象的路径,或者传递完整路径?但示例中只传递了文件名,说明模板中已经设置了路径)。根据用户需求,我们封装一个打印服务类。参考引用[1]的封装方式,但需要注意异常处理和资源释放。步骤:1.添加对BarTender的引用。在项目中引用BarTender应用程序库(通常位于BarTender安装目录下的BarTender.dll)。2.创建类,使用单例模式或静态方式管理Application对象,但要注意避免多次创建实例导致BarTender进程过多。3.打印方法:打开模板,设置变量,打印,关闭模板。注意:BarTender应用程序对象在使用完毕后需要退出,否则会留下进程。引用[1]中在退出时调用了Quit方法。我们参考引用[1]和引用[3]的代码结构,编写一个打印服务类。代码示例:注意:需要先安装BarTender软件,并在项目中添加对BarTender.dll的引用(COM组件:BarTenderApplication10.0等版本,具体版本号根据安装的BarTender版本而定)。下面是一个封装示例:</think>### C# 调用 BarTender 服务打印标签指南 #### 核心步骤与代码实现 ```csharp using BarTender; using System; using System.Windows.Forms; public class BarTenderService { // 单例模式管理BarTender应用对象[^1][^2] private static Application _btApp; public static Application BtApp => _btApp ??= new Application(); /// <summary> /// 打印标签方法 /// </summary> /// <param name="templatePath">模板路径(.btw文件)</param> /// <param name="printerName">打印机名称</param> /// <param name="data">具名变量字典(键值对)</param> public bool PrintLabel(string templatePath, string printerName, System.Collections.Generic.Dictionary<string, string> data) { try { // 1. 打开模板[^1][^3] Format btFormat = BtApp.Formats.Open(templatePath, false, ""); // 2. 配置打印机[^2] btFormat.PrintSetup.PrinterName = printerName; btFormat.PrintSetup.IdenticalCopiesOfLabel = 1; // 打印份数 btFormat.PrintSetup.NumberOfSerializedLabels = 1; // 序列标签数 // 3. 设置具名变量值[^1][^4] foreach (var item in data) { // 注意:模板中的变量必须设置为"共享名"[^4] btFormat.SetNamedSubStringValue(item.Key, item.Value); } // 4. 执行打印(不显示打印对话框)[^1][^3] btFormat.PrintOut(false, false); // 5. 关闭模板不保存更改[^3] btFormat.Close(BtSaveOptions.btDoNotSaveChanges); return true; } catch (Exception ex) { MessageBox.Show($"打印失败: {ex.Message}"); return false; } } /// <summary> /// 退出BarTender进程[^1] /// </summary> public static void Quit() { _btApp?.Quit(BtSaveOptions.btDoNotSaveChanges); _btApp = null; } } ``` #### 调用示例 ```csharp // 准备打印数据 var printData = new System.Collections.Generic.Dictionary<string, string> { { "ProductName", "电容C7X5R" }, // 对应模板中的共享变量名 { "Barcode", "C2024001A" }, // 注意变量名大小写敏感 { "BatchNo", "BATCH-2024-001" } }; // 执行打印 var service = new BarTenderService(); service.PrintLabel( templatePath: @"D:\Templates\label.btw", printerName: "Zebra ZT410", data: printData ); // 程序退出时清理资源 BarTenderService.Quit(); ``` #### 关键注意事项 1. **具名变量设置** - 模板中的变量必须设为**共享名**(Shared Property)[^4] - 使用 `SetNamedSubStringValue` 时变量名**大小写敏感** - 变量未找到时将抛出 `COMException`[^4] 2. **图片打印实现**[^3] ```csharp // 图片需传递文件路径(模板需预设路径) printData.Add("ProductImage", @"D:\images\capacitor.png"); ``` 3. **进程管理** - 保持 `Application` 单例避免创建多个进程 - 程序退出时调用 `Quit()` 释放资源[^1] 4. **模板设计规范** - 所有变量在 BarTender 设计器中需启用"共享名"属性 - 建议使用英文命名变量(避免中文编码问题)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值