Я использую 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.