我正在尝试使用Link-OS SDK使用XCode for iOS中的GraphicsUtil类将图像发送到Zebra iMZ320打印机。
-(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英寸的空白纸张。 I tried to set the "media.tof" var to 0 and tried to send the SETFF 50 2 command,没有运气。任何提示?谢谢!
答案 0 :(得分:13)
这通常是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”调用来实现相同的效果)
答案 1 :(得分:0)
我无法发表评论,但我必须在此处添加此内容。据我所知,接受的答案不是保存在打印机中的参数。每次重新启动打印机时它都会重置。
要使上述方法正常工作,您需要在每次启动并连接到打印机时发送setvar命令,否则它将被重置。
对于运行固件V73.19.13Z(目前是最新版本)的Zebra iMZ220,至少可以发现这一点。
我还注意到您可以使用Zebra Config Utility(v1.1.9.1122)配置媒体类型。在&#34;下配置打印机设置&#34;你可以设置日记/黑标/差距感。您也可以在打印后设置进纸长度。但是如果您保存文件并将其发送到打印机并查看配置文件,那么就没有配置介质类型或进纸长度。
Zebra支持尚未认识到他们有问题或指向解决方案。 :/