2011-02-27 11 views
7

He desarrollado una aplicación para iPad/iPhone que requiere que imprima un recibo en una impresora de red cuando termino una transacción. Logré que la funcionalidad de impresión de planos funcionara en cierta medida, ya que puedo hacer que el popover UIPrintInteractionController aparezca de forma adecuada, haga clic en el botón "Imprimir" y luego vea los resultados en el simulador de impresora. Debido a los requisitos de mi solicitud, espero omitir el paso de popover e imprimir automáticamente el recibo cuando cierre la transacción. En otras palabras, ¿es posible enviar un trabajo de impresión a una impresora de red previamente especificada sin tener que agregar el clic adicional del botón? ¿Debo tratar de extender la clase UIPrintInteractionController? Si es así, ¿alguien ha tenido suerte con este enfoque?iPad/iPhone - imprimiendo directamente a una impresora de red sin popover airprint

Cualquier otra recomendación alternativa sería genial también.

+0

¿Has encontrado alguna solución para esta pregunta? –

+0

también estoy buscando el mismo tipo de funcionalidad. alguien ha descubierto esto. – Rajashekar

+0

@Rajashekar por fin, ¿encontró algún método para hacer esto? –

Respuesta

1

No hay forma de hacerlo con la clase UIPrintInteractionController, está diseñado para presentarle al usuario las opciones de impresión estándar, y no hay una manera segura para evitar esto.

+0

y existe alguna forma insegura de la tienda de aplicaciones para hacer esto? –

-1

Hay camino

#import <BRPtouchPrinterKit/BRPtouchPrinterKit.h> 

BRPtouchPrinterKit es un marco para la impresora Brother más información aquí http://www.brother.com/product/dev/mobile/ios/

Es un SDK especialmente para este tipo de impresora

0

probar este

- (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

Considere proporcionar una explicación a su código – arghtype

Cuestiones relacionadas