斑马打印机:System.Runtime.InteropServices.COMException (0x8004FFFF)

Zebra Printer: System.Runtime.InteropServices.COMException (0x8004FFFF)

我们使用以下代码打印到卡片。

byte[] image;

ZXPPRINTERLib.Job job = new ZXPPRINTERLib.Job();
job.JobControl.Destination = DestinationTypeEnum.Eject;

using (ZMotifGraphics graphics = new ZMotifGraphics())
{
    graphics.InitGraphics(0, 0, ZMotifGraphics.ImageOrientationEnum.Landscape, ZMotifGraphics.RibbonTypeEnum.MonoK);
    graphics.ColorProfile = string.Empty;
    graphics.DrawTextString(...);

    int imageSize;
    image = graphics.CreateBitmap(out imageSize);
}

int actionId;
job.BuildGraphicsLayers(SideEnum.Front, PrintTypeEnum.MonoK, GraphicTypeEnum.BMP, image);
job.PrintGraphicsLayers(1, out actionId);

它在我们的开发机器上工作,但是当我们转移到另一个测试环境时,我们得到以下错误:

System.Runtime.InteropServices.COMException (0x8004FFFF): PrintGraphicsLayers Failed (65535) - Image processing error.
    at ZXPPRINTERLib.IJob.PrintGraphicsLayers(Int32 copies, Int32& actionID)

问题似乎是由 ZXPPrinter.dll 的注册方式引起的。

正如 Hans 在 thread 中指出的那样,在注册 dll 的 32 位和 64 位版本时,一个包含 ZXP3Raster.dll 和一堆文本的文件夹文件在 C:\ProgramData\ZXP Series Card Printer SDK\.

下创建

注册两个版本的 dll,将导致第一个被覆盖。

此外,我的 C# 项目的构建 Platform Target 被设置为构建为 Any CPU。该项目最终 运行 作为 64 位应用程序,同时引用了 32 位 ZXPPrinter.dll.