Журнал список доступных принтеров и их 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
}
}