2011-02-27 183 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