【问题标题】:Log list of available printers and their URLs可用打印机及其 URL 的日志列表
【发布时间】:2015-09-08 17:06:07
【问题描述】:

我正在尝试设置一个UIPrinter 实例,以便我的 iPad 应用程序可以直接打印到该打印机,而无需显示打印控制器对话框。我遇到的问题是我似乎找不到这台打印机的 URL。它通过 AirPrint 连接。

访问http://localhost:631/printers/ 确实会显示打印机,但会显示打印机 URL 的 USB 版本(即 usb://Brother/QL-710W?serial=12345)。

我想知道的是,如何打印(到调试输出)我的可用打印机列表及其 URL?我想通过这样做,我可以找到我的打印机的 AirPrint URL 并从那里开始。

谢谢!

【问题讨论】:

    标签: swift uiprintinteractioncntrler uiprintinfo


    【解决方案1】:

    这是 Swift 3 中的简化版本,适用于 2017 年遇到同样问题的任何人:

    let pickerController = UIPrinterPickerController(initiallySelectedPrinter: nil)
    
    pickerController.present(animated: true) { (controller, completed, error) in
        if completed == true {
            print(controller.selectedPrinter!.url)
        }
    }
    

    【讨论】:

    • 完美!这真的很有帮助。
    【解决方案2】:

    这可能不是最好的方法,但我最终显示了打印机选择器控制器,然后打印(到调试区域)所选 UIPrinter 的 URL:

    let pickerController = UIPrinterPickerController(initiallySelectedPrinter: nil)
    pickerController.presentFromRect(CGRectMake(0, 0, 300, 500), inView: self, animated: true) { (controller:UIPrinterPickerController!, completed:Bool, error:NSError!) -> Void in
        println(controller.selectedPrinter?.URL)
    }
    

    如果有更好的方法,欢迎提出建议!

    【讨论】:

      【解决方案3】:

      这就是我所做的。

      Global Var
      
      var ReceiptPrinterHolder = NSURL()
      var currentPrinter: UIPrinter?
      var ReceiptPrinter: UIPrinter?
      
      func Works(){
      
          let printerPicker = UIPrinterPickerController(initiallySelectedPrinter: currentPrinter2)
      
          printerPicker.presentFromRect(CGRectMake(0, 0, 300, 500), inView: view, animated: true, completionHandler: {
              (printerPicker, userDidSelect, error) in
      
              if userDidSelect {
                  var selectedPrinter: UIPrinter? { return printerPicker.selectedPrinter }
                  currentPrinter = selectedPrinter
                  self.DisplaySelectedAction()
              }else{
                  print("Did not work")
              }
          })
      
          // return currentPrinter2!
      }
      
      @IBAction func ReceiptPrinterAction() {
          Works()
      
          if currentPrinter != nil {
          Label2.text = "Receipt Printer \(ReceiptPrinter!.displayName)"
               ReceiptPrinter = currentPrinter
               ReceiptPrinterHolder = ReceiptPrinter!.URL
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-17
        • 1970-01-01
        • 2016-05-20
        • 2015-07-08
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        相关资源
        最近更新 更多