0

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

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)
4

1 回答 1

0

看来问题是由ZXPPrinter.dll注册方式引起的。

正如 Hans 在此线程中指出的那样,在注册 32 位和 64 位版本的dlla 文件夹时,ZXP3Raster.dll会在C:\ProgramData\ZXP Series Card Printer SDK\.

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

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

于 2018-06-22T06:16:20.717 回答