una samsung imprimir impresora desde descargar cualquier como ios objective-c printing uiwebview uiprintinteractioncntrler

ios - samsung - imprimir desde ipad sin airprint



La impresión de PDF utilizando AirPrint causa una producción pequeña (3)

Si encuentra la solución, evite imprimir el formulario IUWebView . Descargo directamente el PDF en formato NSData .

_data represente el NSData que descargo por solicitud.

if (_data) { UIPrintInteractionController *printController = [UIPrintInteractionController sharedPrintController]; printController.delegate = self; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; //printInfo.jobName = [path lastPathComponent]; printInfo.duplex = UIPrintInfoDuplexLongEdge; printController.printInfo = printInfo; printController.showsPageRange = YES; printController.printingItem = _data; void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if (!completed && error) { NSLog(@"FAILED! due to error in domain %@ with error code %lu", error.domain, (long)error.code); } }; [printController presentAnimated:YES completionHandler:completionHandler]; }

UIPrintInteractionController imprimir un pdf con UIPrintInteractionController que carga en UIWevView . La buena noticia es que puedo imprimir lo malo es que el resultado de la impresión es demasiado pequeño.

any help would be appreciated :) - (IBACTION) printPDF { if ((!_webView)) return; UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController]; void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if(!completed && error){ NSLog(@"FAILED! due to error in domain %@ with error code %ld", error.domain, (long)error.code); } }; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.duplex = UIPrintInfoDuplexLongEdge; controller.printInfo = printInfo; controller.showsPageRange = YES; _webView.scalesPageToFit = NO; UIViewPrintFormatter *viewFormatter = [_webView viewPrintFormatter]; viewFormatter.startPage = 0; controller.printFormatter = viewFormatter; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { /* [controller presentFromBarButtonItem:printButton animated:YES completionHandler:completionHandler]; */ }else [controller presentAnimated:YES completionHandler:completionHandler]; }

La salida:


prueba con esta paz de código ...

-(IBAction)printPDF { _webView.scalesPageToFit=YES; UIImage *img=[self imageWithView:_webView]; UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.duplex = UIPrintInfoDuplexLongEdge; pic.printInfo = printInfo; pic.showsPageRange = YES; pic.printingItem = img; pic.showsPageRange = YES; UIPrintInteractionCompletionHandler completionHandler = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if(!completed && error) { NSLog(@"Print failed - domain: %@ error code %u", error.domain, error.code); } };

}


Además de la respuesta de @crescendolls, aquí hay una pieza completa de código para convertir PDF en su vista web a datos, e imprimirlo en consecuencia.

-(void)printReport { UIPrintInfo *pi = [UIPrintInfo printInfo]; pi.outputType = UIPrintInfoOutputGeneral; pi.jobName = webView.request.URL.absoluteString; pi.orientation = UIPrintInfoOrientationPortrait; pi.duplex = UIPrintInfoDuplexLongEdge; UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; pic.printInfo = pi; pic.showsPageRange = YES; //does not display PDF appropriately //pic.printFormatter = webView.viewPrintFormatter; //does display PDF appropriately NSCachedURLResponse* webResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:[webView request]]; NSData* webData = [webResponse data]; pic.printingItem = webData; [pic presentFromBarButtonItem:self.printBarButton animated:YES completionHandler:^(UIPrintInteractionController *pic2, BOOL completed, NSError *error) { // indicate done or error }]; }