2015-09-08 1 views
0

Je tente de configurer une instance UIPrinter pour que mon application iPad puisse imprimer directement sur cette imprimante sans avoir à présenter la boîte de dialogue du contrôleur d'impression. Le problème que j'ai est que je n'arrive pas à trouver l'URL de cette imprimante. Il est connecté via AirPrint.Liste des journaux des imprimantes disponibles et de leurs URL

En visitant http://localhost:631/printers/, l'imprimante est affichée, mais elle affiche la version USB de l'URL de l'imprimante (c'est-à-dire usb://Brother/QL-710W?serial=12345). Qu'est-ce que je me demande est, comment puis-je imprimer (à la sortie de débogage) une liste de mes imprimantes disponibles, et leurs adresses URL? Je figure en faisant cela, je peux alors localiser l'URL AirPrint de mon imprimante et aller à partir de là.

Merci!

Répondre

1

Cela pourrait ne pas être la meilleure façon de le faire, mais je fini par afficher le contrôleur Picker imprimante, puis imprimer (à la zone de mise au point) l'URL du UIPrinter sélectionné:

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

Ouvert aux suggestions s'il y a un meilleur moyen!

0

Voici ce que j'ai fait.

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

Voici une version simplifiée à Swift 3 pour tous ceux qui tombent sur cette même question en 2017:

let pickerController = UIPrinterPickerController(initiallySelectedPrinter: nil) 

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