ZEBRA iMZ320を使用することにより、UIImageを印刷する完全な例(のObjective-C)があります。私は、同じ印刷コマンドを使用して、JavaまたはKotlinで適切なコードを準備することができると思います。
UIImage *image = ...; //printing image; default wight should be ~572
id<ZebraPrinterConnection, NSObject> connection = [[MfiBtPrinterConnection alloc] initWithSerialNumber:serialNumber];
if (![connection open]) {
NSLog(@"Printer Error! Please check the printer and try it again.");
return;
}
NSError *error = nil;
id<ZebraPrinter, NSObject> printer = [ZebraPrinterFactory getInstance:connection error:&error];
PrinterStatus *status = [printer getCurrentStatus:&error];
if (status == nil) {
NSLog(@"Error: %@", [error localizedDescription]);
return;
} else if (!status.isReadyToPrint) {
NSLog(@"The printor is not ready to print");
return;
}
CGSize imageSize = image.size;
//Send configuration command with setting "media_type" = "continuous" and "printing height" = "imageSize.height"
for (NSString *cmd in @[@"! U1 setvar \"ezpl.media_type\" \"continuous\"\r\n",
[NSString stringWithFormat:@"! U1 setvar \"zpl.label_length\" \"%d\"\r\n", (int)imageSize.height]]) {
if (![[printer getToolsUtil] sendCommand:cmd error:&error]) {
NSLog(error == nil ? @"Printer Error! Please check the printer and try it again." : [error localizedDescription]));
return;
}
}
[NSThread sleepForTimeInterval:1];
if ([[printer getGraphicsUtil] printImage:[image CGImage] atX:0 atY:0 withWidth:-1 withHeight:-1 andIsInsideFormat:false error:&error]) {
status = [printer getCurrentStatus:&error];
int i = 0;
while (!status.isReadyToPrint || i > 30) {
[NSThread sleepForTimeInterval:1];
status = [printer getCurrentStatus:&error];
i++;
}
[NSThread sleepForTimeInterval:1];
NSLog(@"Prining should be success");
} else {
NSLog(error == nil ? @"Printer Error! Please check the printer and try it again." : [error localizedDescription]));
}
for (NSString *cmd in @[[NSString stringWithFormat:@"! U1 setvar \"zpl.label_length\" \"%d\"\r\n", 50],
@"PRINT\r\n"]) {
[[printer getToolsUtil] sendCommand:cmd error:nil];
}
[connection close];