Zebra IMZ 320 печатает изображение слишком долго (iOS)

Я использую Zebra IMZ 320 для печати PDF-документа из iOS (на самом деле квитанция), и это работает. Но мне требуется около 50 секунд, чтобы распечатать PDF-документ размером 23 КБ.

Я подумал, может быть, если я отправлю его в шестнадцатеричном формате, который поймет принтер, время печати уменьшится, но я не могу найти, как отправить его в байтовом формате. Я пытался посмотреть zpl-коды, но, насколько я понимаю, в основном речь идет о преобразовании изображения в формат .grf и отправке его на принтер с помощью утилит, но мои изображения динамические.

Может ли кто-нибудь помочь мне с этим?

Вот мой код для отправки печатных изображений:

CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((CFDataRef)pdfData);
CGPDFDocumentRef document = CGPDFDocumentCreateWithProvider(dataProvider);

    size_t nPages = CGPDFDocumentGetNumberOfPages(document);
    size_t pageNum;
    for (pageNum = 1; pageNum <= nPages; pageNum++) {

        UIImage* image = nil;

        CGPDFPageRef page = CGPDFDocumentGetPage(document, pageNum);

        CGRect rect = CGPDFPageGetBoxRect(page, kCGPDFArtBox);

        UIGraphicsBeginImageContextWithOptions(rect.size, YES, 2.6);

        CGContextRef context = UIGraphicsGetCurrentContext();

        CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
        const CGFloat fillColors[] = {1.0, 1.0, 1.0, 1.0};

        CGColorRef colorRef = CGColorCreate(rgb, fillColors);
        CGContextSetFillColorWithColor(context, colorRef);
        CGContextFillRect(context, rect);
        CGColorSpaceRelease(rgb);
        CGColorRelease(colorRef);

        CGContextTranslateCTM(context, 0.0, rect.size.height);

        CGContextScaleCTM(context, 1.0, -1.0);

        if (page != NULL)
        {
            CGContextSaveGState(context);

            CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, rect, 0, true);

            CGContextConcatCTM(context, pdfTransform);

            CGContextDrawPDFPage(context, page);

            CGContextRestoreGState(context);

            image = UIGraphicsGetImageFromCurrentImageContext();
        }

        UIGraphicsEndImageContext();

        if (nil != image) {
            NSError *error = nil;
            success = [graphicsUtil printImage:[image CGImage] atX:0 atY:0 withWidth:x withHeight:y
                             andIsInsideFormat:NO error:&error];
        }
    }

Большое спасибо

Примечание. Да, это через Bluetooth.


person Arif Ata Cengiz    schedule 31.01.2014    source источник
comment
это по блютусу?   -  person Ovi Tisler    schedule 31.01.2014
comment
Сколько времени занимает рендеринг PDF? Насколько велик PDF-файл до того, как вы сделаете вызов для отправки байтов на принтер? Bluetooth намного медленнее, чем TCP, поэтому требуется некоторое время, если изображение большое.   -  person Ovi Tisler    schedule 06.02.2014
comment
PDF имеет размер 23 КБ, и его печать из imz320 занимает 50 секунд, но также требуется 50 секунд для печати 100 КБ PDF. По моим наблюдениям, время печати изображения примерно равно длине бумаги, потому что однажды я распечатал пустой PDF-файл длиной 20 см, и это также заняло много времени.   -  person Arif Ata Cengiz    schedule 10.02.2014


Ответы (1)


Один из способов сократить время — отправить на принтер текст чека (отформатированный на языке принтера) вместо отправки изображения в формате PDF; этот подход резко уменьшит количество байтов, которые должны быть отправлены по Bluetooth, обычно до менее 1 КБ.

person user3025177    schedule 19.02.2014
comment
Я так понимаю, ОП знал об этом и спрашивал, как это можно сделать с помощью доступных SDK? Итак, что, вероятно, необходимо, так это предложения по отправке ZPL, CPCL или EPL на указанный принтер зебры в Objective-C. Возможно, эта библиотека или эти ресурсы полезны. - person J. Katzwinkel; 19.02.2014
comment
Да, это именно то, о чем я спрашивал, кстати, мы сократили время печати вдвое, используя язык печати ZPL вместо CPL. - person Arif Ata Cengiz; 27.02.2014