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

初始化Dymo Labelwriter 450打印机时遇COM未注册错误求助

解决DYMO打印机初始化时的COM未注册(DYMO.DLS)及类型转换问题

初始化DYMO打印机时遇到**COM未注册(DYMO.DLS)**错误,同时代码中的类型转换尝试无效,相关代码如下:

//error here
DYMO.Label.Framework.IPrinters printer = (DYMO.Label.Framework.IPrinters) Framework.GetPrinters().First(x => x.Name == LabelWriterCmb.Text);    
// error here

var server = new LocalPrintServer();

PrintQueue queue450 = server.GetPrintQueue(LabelWriterCmb.Text, new string[0] { });
var isOutOfPaper450 = queue450.IsOutOfPaper;
var isOffLine450 = queue450.IsOffline;
var isPaperJam450 = queue450.IsPaperJammed;
var requiresUser450 = queue450.NeedUserIntervention;
var hasPaperProblem450 = queue450.HasPaperProblem;
var isBusy450 = queue450.IsBusy;

if (printer is ILabelWriterPrinter && !isOffLine)
{
    ILabelWriterPrintParams printParams = null;
    ILabelWriterPrinter labelWriterPrinter = printer as ILabelWriterPrinter;
    if (labelWriterPrinter.IsTwinTurbo)
    {
        printParams = new LabelWriterPrintParams();
        printParams.RollSelection = (RollSelection)Enum.Parse(typeof(RollSelection), TrayCmb.Text);
    }

    for (int aantalPrints1 = 1; aantalPrints1 <= aantal; aantalPrints1++)
    {
        _label.SetObjectText("Streepjescode", ObjectDataEdit.Text);
        _label.SetObjectText("Tekst1", string.Format("Login PC vestiging {0}", vestiging[locatie]));
        _label.SetObjectText("Product", Artikel);
        decimal verkoopPrijs = decimal.Parse(Verkoop);
        _label.SetObjectText("Tekst2", string.Format("Prijs € {0:N2}", verkoopPrijs));
        //_label.Print(printer, printParams);
        queue = server.GetPrintQueue(LabelWriterCmb.Text, new string[0] { });
        bool onLine = queue.IsPrinting;
    }
}

解决方案

一、修复COM未注册问题

  • 重新注册DYMO COM组件:
    找到DYMO SDK安装目录下的DYMO.DLS.LabelWriter.8.dll(默认路径为C:\Program Files (x86)\DYMO\DYMO Label Software\SDK),以管理员身份打开命令提示符,执行:
    regsvr32 "C:\Program Files (x86)\DYMO\DYMO Label Software\SDK\DYMO.DLS.LabelWriter.8.dll"
    
  • 匹配DYMO Label Software版本:卸载现有DYMO Label软件,重新下载安装最新版本,SDK会随软件一同安装,避免版本不兼容导致注册失败。
  • 检查平台兼容性:如果项目是64位,确保安装64位DYMO SDK;32位项目对应32位SDK,位数不匹配会直接导致COM注册失败。

二、修复代码类型转换错误

原代码中Framework.GetPrinters().First(...)返回单个IPrinter实例,而非IPrinters集合,导致类型转换错误,修正后代码如下:

// 修正类型:IPrinter 而非 IPrinters
DYMO.Label.Framework.IPrinter printer = Framework.GetPrinters().First(x => x.Name == LabelWriterCmb.Text);    

var server = new LocalPrintServer();

PrintQueue queue450 = server.GetPrintQueue(LabelWriterCmb.Text, new string[0] { });
var isOutOfPaper450 = queue450.IsOutOfPaper;
var isOffLine450 = queue450.IsOffline;
var isPaperJam450 = queue450.IsPaperJammed;
var requiresUser450 = queue450.NeedUserIntervention;
var hasPaperProblem450 = queue450.HasPaperProblem;
var isBusy450 = queue450.IsBusy;

// 修正变量名:isOffLine450 而非 isOffLine
if (printer is ILabelWriterPrinter && !isOffLine450)
{
    ILabelWriterPrintParams printParams = null;
    ILabelWriterPrinter labelWriterPrinter = printer as ILabelWriterPrinter;
    if (labelWriterPrinter.IsTwinTurbo)
    {
        printParams = new LabelWriterPrintParams();
        printParams.RollSelection = (RollSelection)Enum.Parse(typeof(RollSelection), TrayCmb.Text);
    }

    for (int aantalPrints1 = 1; aantalPrints1 <= aantal; aantalPrints1++)
    {
        _label.SetObjectText("Streepjescode", ObjectDataEdit.Text);
        _label.SetObjectText("Tekst1", string.Format("Login PC vestiging {0}", vestiging[locatie]));
        _label.SetObjectText("Product", Artikel);
        decimal verkoopPrijs = decimal.Parse(Verkoop);
        _label.SetObjectText("Tekst2", string.Format("Prijs € {0:N2}", verkoopPrijs));
        // 恢复打印调用
        _label.Print(printer, printParams);
        queue = server.GetPrintQueue(LabelWriterCmb.Text, new string[0] { });
        bool onLine = queue.IsPrinting;
    }
}

关键修正点:

  1. 将目标类型从IPrinters改为IPrinter,匹配First()返回的单个打印机实例类型。
  2. 修正if判断中的变量名错误,将isOffLine改为定义好的isOffLine450。
  3. 恢复注释掉的_label.Print(printer, printParams);调用,确保打印逻辑正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:40:27