You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现从C#向Bartender2016的数据传递?附测试代码咨询

C# 向 Bartender 2016 传递数据的完整实现方案

看起来你已经走在正确的路上啦——用Bartender SDK的EngineLabelFormatDocument来操作标签模板,我来帮你把代码补全,再补充一些关键细节,确保数据传递和打印流程顺顺利利的。

先贴出你提供的测试代码片段,方便我们对照分析:

var lb = @"C:\Users\Administrator\Desktop\线标.btw";
using (Engine engine = new Engine(true))
{
    LabelFormatDocument btformate = engine.Documents.Open(lb);
    btformate.SubStrings["version"].Value = txtVersion.Text;
    btformate.SubStrings["pn"].Value = txtPN.Text;
    btformate.SubStrings["sn"].Value = txtsn.Text;
    btformate.SubStrings["week"].Value = txtWeek.Text;
    btformate.PrinterCodeTemplate.Performance.AllowSerialization = false;
    // ... 这里应该还有打印或保存的逻辑
}

一、先确认环境与引用配置

  • 首先得确保项目里已经引用了Bartender的SDK程序集,一般是Seagull.BarTender.Print.dll,你可以去Bartender的安装目录找,默认路径是C:\Program Files\Seagull\BarTender Suite\SDK\DotNet\v4.0
  • 项目的目标框架建议和SDK匹配,Bartender 2016对.NET Core支持有限,优先用.NET Framework 4.0及以上版本。
  • 运行程序的用户得有Bartender的使用权限,而且Bartender的服务(Seagull Bartender Print Server)得处于运行状态,不然连不上引擎。

二、完善数据传递与打印逻辑

你的代码已经完成了核心的数据赋值,接下来只需要补充打印或者导出的逻辑就行,比如直接打印到指定打印机:

var lb = @"C:\Users\Administrator\Desktop\线标.btw";
// 初始化Engine,true表示自动启动Bartender引擎
using (Engine engine = new Engine(true))
{
    LabelFormatDocument btFormat = null;
    try
    {
        btFormat = engine.Documents.Open(lb);
        
        // 给模板里的SubString赋值,注意名称要和模板里的完全一致(区分大小写)
        btFormat.SubStrings["version"].Value = txtVersion.Text;
        btFormat.SubStrings["pn"].Value = txtPN.Text;
        btFormat.SubStrings["sn"].Value = txtsn.Text;
        btFormat.SubStrings["week"].Value = txtWeek.Text;
        
        // 性能优化:关闭序列化,你已经加了这行,很到位
        btFormat.PrinterCodeTemplate.Performance.AllowSerialization = false;
        
        // 打印选项:两种方式选其一
        // 方式1:打印到默认打印机
        btFormat.Print("线标打印任务", PrintRange.AllCopies);
        
        // 方式2:指定具体打印机名称
        // btFormat.Print("线标打印任务", "你的打印机名称", PrintRange.AllCopies);
        
        // 如果需要导出成PDF或者图片,用Export方法就行
        // btFormat.Export(@"C:\output\线标.pdf", "PDF", "");
    }
    catch (Exception ex)
    {
        // 捕获异常,比如模板找不到、SubString名称不对这些问题
        MessageBox.Show($"操作失败:{ex.Message}");
    }
    finally
    {
        // 确保文档被关闭,避免资源占用
        if (btFormat != null && !btFormat.IsClosed)
        {
            btFormat.Close(SaveOptions.DoNotSaveChanges);
        }
    }
}

三、常见问题排查指南

  • SubString名称不匹配:去Bartender软件里打开模板,查看“数据源”里的SubString名称,必须和代码里的完全一致,大小写也不能错。
  • 引擎连接失败:如果初始化Engine时报错,检查Bartender服务有没有正常启动,或者试试手动打开Bartender软件后再运行程序。
  • 权限不足:如果提示无法访问模板或者打印机,试试以管理员身份运行你的程序,或者给当前用户分配Bartender的打印权限。
  • 模板路径问题:确保模板文件存在,绝对路径用@符号转义是对的,别写错路径。

内容的提问来源于stack exchange,提问作者wuhen

火山引擎 最新活动