1

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

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

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

谢谢!

4

3 回答 3

3

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

let pickerController = UIPrinterPickerController(initiallySelectedPrinter: nil)

pickerController.present(animated: true) { (controller, completed, error) in
    if completed == true {
        print(controller.selectedPrinter!.url)
    }
}
于 2017-06-28T20:20:03.253 回答
1

这可能不是最好的方法,但我最终显示了打印机选择器控制器,然后打印(到调试区域)所选 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)
}

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

于 2015-09-09T00:03:44.693 回答
0

这就是我所做的。

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
    }
}
于 2015-10-20T00:03:38.467 回答