斑马打印机: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
.
我们使用以下代码打印到卡片。
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
.