Журнал список доступных принтеров и их URL

Я пытаюсь настроить UIPrinter Например, мое приложение для iPad может печатать непосредственно на этом принтере, не отображая диалоговое окно контроллера печати. Проблема в том, что я не могу найти URL этого принтера. Это связано через AirPrint.

Посещение http://localhost:631/printers/ действительно показывает принтер, но показывает версию USB URL-адреса принтера (т.е. usb://Brother/QL-710W?serial=12345).

Что мне интересно, так это как я могу распечатать (в выходные данные отладки) список моих доступных принтеров и их URL-адреса? Делая это, я могу найти URL-адрес AirPrint моего принтера и перейти оттуда.

Спасибо!

3 ответа

Решение

Вот упрощенная версия Swift 3 для всех, кто наткнулся на этот же вопрос в 2017 году:

let pickerController = UIPrinterPickerController(initiallySelectedPrinter: nil)

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

Возможно, это не лучший способ сделать это, но я закончил тем, что отобразил контроллер выбора принтера, а затем распечатал (в области отладки) URL-адрес выбранного UIPrinter:

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)
}

Открыты для предложений, если есть лучший способ!

Вот что я сделал.

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
    }
}
Другие вопросы по тегам