You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForms切换DymoSDK后打印失效,求打印及标签修改方案

DymoSDK替换旧Dymo.Label包后的打印恢复与标签修改方案

DymoSDK的API设计和旧的Dymo.Label包完全不同,需要重构代码逻辑,以下是适配后的完整实现:

核心步骤与代码示例

1. 初始化SDK对象

先获取Dymo标签打印机服务实例,并创建标签对象:

// 获取Dymo打印机服务实例
IDymoLabelWriter labelWriter = DymoLabelWriter.Instance;
// 初始化标签对象
IDymoLabel dymoLabel = new DymoLabel();

2. 加载标签文件

替换旧的DymoAddIn.Open方法,使用SDK的LoadLabelFromFilePath加载本地标签文件:

// 加载本地.label文件(用@前缀避免路径转义问题)
bool isLoaded = dymoLabel.LoadLabelFromFilePath(@"c:\username\files\output\artikel.label");
if (!isLoaded)
{
    MessageBox.Show("标签文件加载失败");
    return;
}

3. 修改标签字段内容

替换旧的DymoLabels.SetField,使用SetLabelText方法设置指定字段的值:

// 设置字段"pieces"的内容
bool isFieldSet = dymoLabel.SetLabelText("pieces", $"store:  {some}  {some2}");
if (!isFieldSet)
{
    MessageBox.Show("字段设置失败,请检查字段名是否与标签文件中一致");
    return;
}

4. 执行打印操作

DymoSDK无需手动开启/结束打印作业,直接调用PrintLabel完成打印:

// 检测可用的Dymo打印机
var printers = labelWriter.GetPrinters();
if (printers == null || printers.Count == 0)
{
    MessageBox.Show("未检测到Dymo打印机");
    return;
}

// 执行打印:参数依次为打印机名称、标签对象、打印份数、是否忽略警告
labelWriter.PrintLabel(printers.First().Name, dymoLabel, 2, false);

关键差异说明

  • 旧代码的DymoAddIn和DymoLabels对象被SDK的IDymoLabelWriter和IDymoLabel替代
  • 打印流程简化,无需手动调用StartPrintJob和EndPrintJob
  • 所有操作返回bool值,可直接校验加载/设置是否成功,方便排查问题
  • 路径建议用@前缀或双反斜杠\\避免转义错误

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 02:27:20