>我正在尝试使用 Link-OS SDK 将图像发送到 Zebra iMZ320 打印机,使用 XCode for iOS 中的 GraphicsUtil 类。
-(void)printImage:(UIImage *)image{
NSString *serialNumber = @"";
EAAccessoryManager *sam = [EAAccessoryManager sharedAccessoryManager];
NSArray * connectedAccessories = [sam connectedAccessories];
for (EAAccessory *accessory in connectedAccessories) {
if([accessory.protocolStrings indexOfObject:@"com.zebra.rawport"] != NSNotFound){
serialNumber = accessory.serialNumber;
break;
}
}
self.connection = [[MfiBtPrinterConnection alloc] initWithSerialNumber:serialNumber];
NSError *error = nil;
BOOL success = [self.connection open];
self.printer = [ZebraPrinterFactory getInstance:self.connection error:&error];
//Set the device language to zpl or the image prints its HEX value
[SGD SET:@"device.languages" withValue:@"zpl" andWithPrinterConnection:self.connection error:&error];
id<GraphicsUtil, NSObject> graphicsUtil = [self.printer getGraphicsUtil];
success = [graphicsUtil printImage:[image CGImage] atX:0 atY:0 withWidth:200 withHeight:200 andIsInsideFormat:NO error:&error];
}
图像打印正确,但打印机在打印图像之前送入大约 9 英寸的空白纸张。我试图将"media.tof"var设置为0,并试图发送SETFF 50 2命令,但没有运气。 有什么提示吗?谢谢!
这通常是 Zebra 打印机配置问题。 Zebra 打印机可设置为连续模式(用于打印收据)或标签模式(用于打印标签)。 此外,当设置为标签模式时,打印机可能正在寻找一个黑条来分隔标签或标签之间的间隙。 因此,最重要的问题是:您使用什么类型的媒体?
连续"收据"纸 -
如果使用连续纸张,则需要提前设置打印作业的标签长度。 您还需要指示您使用的是连续媒体。 您可以发送以下命令来执行此操作:
! U1 setvar "ezpl.media_type" "continuous"
! U1 setvar "zpl.label_length" "500"
中间有黑条的标签 -
如果您使用的是黑条标签,则需要将此 SGD 命令发送到打印机:
! U1 setvar "ezpl.media_type" "mark"
中间有间隙的标签 -
如果使用中间有间隙的标签,则需要发送以下 SGD 命令:
! U1 setvar "ezpl.media_type" "gap/notch"
(请注意,上面的命令在 !U1 SGD 表示法。 您可以简单地使用您在代码中看到的 SDK "SGD"调用来实现相同的效果)
我不能发表评论,但我必须在这里添加这个。据我所知,接受的答案不是保存在打印机中的参数。每次重新启动打印机时,它都会重置。
要使上述方法正常工作,您需要在每次开机并连接到打印机时发送setvar命令,否则它将被重置。
至少在运行固件 V73.19.13Z(当前为最新版本)的 Zebra iMZ220 中发现这是正确的。
我还注意到,您可以使用 Zebra 配置实用程序 (v1.1.9.1122) 配置介质类型。在"配置打印机设置"下,您可以设置日志/黑标/间隙感应。您还可以在打印后设置进纸长度。但是,如果您保存文件并将其发送到打印机并查看配置文件,则其中没有介质类型或进纸长度的配置。
Zebra 支持人员尚未能够识别出他们有问题或指出解决方案。