En primer lugar añadir UIPrintInteractionControllerDelegate y crear variables
UIPrintInteractionController *printController;
A continuación código para imprimir todas las imágenes, documentos, Excel, PowerPoint, archivos PDF que funciona para mí:
[self printItem:SomeData withFilePath:YourFilePath];
En el código anterior, proporcione su NSData de su documento/imagen y URL (rutaArchivo) y por debajo de código más printItem: withFilePath: método
-(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 le ayudará. Gracias
He actualizado mi respuesta para incluir código de muestra para imprimir texto sin formato. –