【发布时间】:2019-07-15 13:00:48
【问题描述】:
我目前正在通过UIPrintInteractionController printToPrinter 方法使用直接打印开发一个应用程序,但是当我启动打印命令时,会弹出一个提示:
打印到“my-printer.local”。
正在联系打印机...
但我的打印机中没有任何打印订单,并且该应用卡在此弹出窗口中(点击“取消”按钮什么也不做)。
这是我的打印方法:
- (void)directPrint:(nonnull NSString*)name withPrinter:(NSURL*)printerURL {
UIPrintInteractionController* controller = [UIPrintInteractionController sharedPrintController];
[controller setDelegate:self];
UIPrintInfo* printInfo = [UIPrintInfo printInfo];
printInfo.jobName = name;
printInfo.outputType = UIPrintInfoOutputGeneral;
controller.printInfo = printInfo;
renderer = [[PdfPrintPageRenderer alloc] init:channel];
[controller setPrintPageRenderer:renderer];
UIPrintInteractionCompletionHandler completionHandler =
^(UIPrintInteractionController* printController, BOOL completed, NSError* error) {
NSLog(@"Handler completed: %d", completed);
if (!completed && error) {
NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, (unsigned int)error.code);
}
self->renderer = nil;
};
UIPrinter* printer = [UIPrinter printerWithURL:printerURL];
BOOL status = [controller printToPrinter:printer completionHandler:completionHandler];
NSLog(@"Print status: %d", status);
}
printerURL 来自 UIPrinterPickerController presentAnimated 方法。
status 变量为true。
我尝试使用 iPhone 模拟器 + 打印机模拟器,这是一个方法调用的打印机日志:
[21/Feb/2019:14:40:49 +0100] [Client 46] Accepted connection from 192.168.1.131:57092 (IPv4)
[21/Feb/2019:14:40:49 +0100] [Client 46] Encrypting connection.
[21/Feb/2019:14:40:49 +0100] [Client 46] Connection from 192.168.1.131 now encrypted.
[21/Feb/2019:14:40:49 +0100] [Client 47] Accepted connection from 192.168.1.131:57093 (IPv4)
[21/Feb/2019:14:40:49 +0100] [Client 47] Encrypting connection.
[21/Feb/2019:14:40:49 +0100] [Client 47] Connection from 192.168.1.131 now encrypted.
注意 1: 使用 UIPrintInteractionController presentAnimated 打印效果很好(使用模拟器或真实设备)。
注意 2:以下代码在 Flutter 插件中使用。
【问题讨论】:
标签: ios objective-c printing flutter