iphone cocoa-touch ipad printing ios-4.2

iphone - ¿Cómo imprimir en iOS 4.2?



cocoa-touch ipad (3)

Quiero integrar la funcionalidad de impresión en mi aplicación.

El documento que quiero imprimir estará en formato .doc o .txt. Todavía no tengo mucha experiencia en el desarrollo de iPhone, por lo que me resulta difícil implementarlo siguiendo la documentación de Apple.

Si alguien me puede ayudar publicando un código de ejemplo, será de gran ayuda.


Consulte la Guía de dibujo e impresión para iOS : he vinculado a la sección de impresión. Hay código de ejemplo y buenos enlaces a más código de ejemplo allí.

Edit : veo que indica que encuentra la documentación difícil de seguir.

Los documentos de Word son complicados: deberá analizarlos a través de los datos, lo cual es bastante difícil.

Texto y HTML son más fáciles. Tomé el ejemplo de Apple para HTML y lo cambié por texto plano:

- (IBAction)printContent:(id)sender { UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; pic.delegate = self; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = self.documentName; pic.printInfo = printInfo; UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:yourNSStringWithContextOfTextFileHere]; textFormatter.startPage = 0; textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins textFormatter.maximumContentWidth = 6 * 72.0; pic.printFormatter = textFormatter; [textFormatter release]; pic.showsPageRange = YES; void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if (!completed && error) { NSLog(@"Printing could not complete because of error: %@", error); } }; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler]; } else { [pic presentAnimated:YES completionHandler:completionHandler]; } }


En primer lugar, agregue UIPrintInteractionControllerDelegate y cree la variable

UIPrintInteractionController *printController;

Debajo del código para imprimir todas las imágenes, documentos, excel, powerpoint, archivos pdf me funciona:

[self printItem:SomeData withFilePath:YourFilePath];

En el código anterior, proporciona su NSData de su documento / imagen y URL (filePath) y debajo del código adicional de printItem: withFilePath: method

-(void)printItem :(NSData*)data withFilePath:(NSString*)filePath{ printController = [UIPrintInteractionController sharedPrintController]; printController.delegate = self; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = [NSString stringWithFormat:@""]; printInfo.duplex = UIPrintInfoDuplexLongEdge; printController.printInfo = printInfo; printController.showsPageRange = YES; //If NSData contains data of image/PDF if(printController && [UIPrintInteractionController canPrintData:data]) { printController.printingItem = data; }else{ UIWebView* webView = [UIWebView new]; printInfo.jobName = webView.request.URL.absoluteString; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]]; printController.printFormatter = webView.viewPrintFormatter; } void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if (!completed && error) { //NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code); } }; // Check wether device is iPad/iPhone , because UIPrintInteractionControllerDelegate has different methods for both devices if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { [printController presentFromRect:self.view.frame inView:self.view animated:YES completionHandler:completionHandler]; } else { [printController presentAnimated:YES completionHandler:completionHandler]; } }

Espero que te ayude. Gracias

// Para Swift y si solo desea imprimir una imagen, primero cree IBoutlet para la imagen

@IBOutlet var qrImage : UIImageView?

y luego, al hacer clic en el botón de impresión, simplemente agregue el siguiente código

//In your view controller @IBAction func printButton(sender: AnyObject) { let printInfo = UIPrintInfo(dictionary:nil) printInfo.outputType = UIPrintInfoOutputType.general printInfo.jobName = "My Print Job" // Set up print controller let printController = UIPrintInteractionController.shared printController.printInfo = printInfo // Assign a UIImage version of my UIView as a printing iten printController.printingItem = self.qrImage?.image // Do it printController.present(from: self.view.frame, in: self.view, animated: true, completionHandler: nil) }


Hola, esto puede ayudarte a intentarlo y publicar si tienes alguna consulta.

-(IBAction)printFromIphone:(id)sender { UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; pic.delegate = self; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = self.documentName; pic.printInfo = printInfo; UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:yourNSStringWithContextOfTextFileHere]; textFormatter.startPage = 0; textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins textFormatter.maximumContentWidth = 6 * 72.0; pic.printFormatter = textFormatter; [textFormatter release]; pic.showsPageRange = YES; void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if (!completed && error) { NSLog(@"Printing could not complete because of error: %@", error); } }; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler]; } else { [pic presentAnimated:YES completionHandler:completionHandler]; } }