【问题标题】:iOS UIPrintInteractionController printToPrinter Contacting printeriOS UIPrintInteractionController printToPrinter 联系打印机
【发布时间】: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


    【解决方案1】:

    此问题与 iOS 打印功能无关,而是来自直接打印的插件实现。
    更多信息请看这里:https://github.com/DavBfr/dart_pdf/issues/37

    是回调和线程的当前使用导致 UI 无响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多