我使用Zebra IMZ 320从iOS打印pdf文件(实际收据)并且它有效。但我需要大约50秒才能打印出一张23 kb的pdf文档。
我想也许如果我以十六进制格式发送它,打印机会理解,打印时间会减少,但我找不到如何以字节格式发送它。我试图查看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];
}
}
非常感谢
注意:是的,这是通过蓝牙
答案 0 :(得分:0)
减少时间的一种方法是将收据的文本发送到打印机(使用打印机语言格式化),而不是发送PDF图像;这种方法可以大大减少必须通过蓝牙发送的字节数,通常低于1K。