Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
658 views
in Technique[技术] by (71.8m points)

ios - Zebra iMZ320 image printing feeds too much paper

I'm trying to use the Link-OS SDK to send images to a Zebra iMZ320 printer using the GraphicsUtil class in XCode for iOS.

-(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];


}

The image prints correctly but the printer feeds about 9 inches of blank paper before printing the image. I tried to set the "media.tof" var to 0 and tried to send the SETFF 50 2 command, with no luck. Any hints ? Thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This is generally a Zebra printer configuration issue. Zebra printers can be set to either continuous mode (for printing receipts) or label mode (for printing labels). Furthermore, when set to label mode, the printer could be looking for a black bar to separate labels OR a gap in between the labels. So, the most important question is: what type of media are you using?

Continuous 'receipt' paper -

If you are using continuous paper, you will want to set the label length of your print job ahead of time. You will also want to indicate that you are using continuous media. You can send these commands to do so:

! U1 setvar "ezpl.media_type" "continuous"
! U1 setvar "zpl.label_length" "500"

Labels with black bars in between -

If you are using black bar labels, you need to send this SGD commands to the printer:

! U1 setvar "ezpl.media_type" "mark"

Labels with gaps in between -

If you are using labels with gaps in between, the following SGD command needs to be sent:

! U1 setvar "ezpl.media_type" "gap/notch"

(Notice the commands above are in ! U1 SGD notation. You can simply use the SDK 'SGD' calls as you see in your code to accomplish the same effect)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...