2011-02-27 182 views
7

我開發的iPad/iPhone應用程序需要我在完成交易時在網絡打印機上打印收據。我已經設法在某種程度上獲得airprint功能,因爲我可以使UIPrintInteractionController彈出窗口正確顯示,單擊「打印」按鈕,然後在打印機模擬器中查看結果。由於我的應用程序的要求,我希望跳過popover步驟並在關閉事務時自動打印收據。換句話說,是否可以將打印作業發送到預先指定的網絡打印機而無需添加額外的按鈕點擊?我是否需要嘗試擴展UIPrintInteractionController類?如果是這樣,有沒有人有這種方法運氣?iPad/iPhone - 直接打印到網絡打印機,無需airprint popover

其他任何替代建議也會很好。

+0

你有沒有找到這個問題的任何解決方案? – 2011-06-15 14:55:01

+0

我也在尋找同樣的功能。有誰知道這一點。 – Rajashekar 2011-07-26 09:08:08

+0

@Rajashekar最後,你有沒有找到任何方法來做到這一點? – 2014-09-22 09:45:15

回答

1

使用UIPrintInteractionController類沒有辦法做到這一點,它的目的是爲用戶提供標準的打印選項,並沒有應用程序商店安全的方式來解決這個問題。

+0

,有沒有任何應用程序商店不安全的方式來做到這一點? – 2014-09-22 09:42:42

-1

有一種方法

#import <BRPtouchPrinterKit/BRPtouchPrinterKit.h> 

BRPtouchPrinterKit是打印機兄弟在這裏更多信息http://www.brother.com/product/dev/mobile/ios/

一個框架是一個SDK尤其是對於這種類型的打印機

0

的嘗試這個

- (IBAction)Print:(id)sender { 
    [self searchForPrinters]; 
    } 
- (void) searchForPrinters 
    { 

    if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) 
    { 
     UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil]; 
    [printPicker presentAnimated:YES completionHandler: 
    ^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error) 
     { 
     if (userDidSelect) 
      { 
      //User selected the item in the UIPrinterPickerController and got the printer details. 

      [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter]; 

      //Here you will get the printer and printer details.ie, 
      // printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title. 

      [btnSettingsPrint setTitle:printerPicker.selectedPrinter.displayName forState:UIControlStateNormal]; 

      NSURL *printerURL = printerPicker.selectedPrinter.URL; 

     } 
    }]; 
} 
} 

-(void)printYourItem :(NSData*)data 
{ 
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) 
    { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    UIPrinter *currentPrinterObj = [UIPrinter printerWithURL:[NSURL URLWithString:[defaults stringForKey:@"YouKeys"]]]; 

    UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController]; 

    if(currentPrinterObj) 
    { 
     [controller printToPrinter:currentPrinterObj completionHandler:^(UIPrintInteractionController *printController, BOOL completed, NSError *error) 
     { 
      if(completed) 
      { 
      } 
      else 
      { 
       NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code); 
      } 
     }]; 
    } 
} 
} 
+0

考慮向您的代碼提供解釋 – arghtype 2015-08-09 15:52:06