UIWebView全部区域截图保存为UIImage或者PDF
// // UIWebView+ToFile.h // UIWebViewToFile // // Created by Tracy E on 13-6-10. // Copyright (c) 2013 EsoftMobile.com. All rights reserved. // #import <UIKit/UIKit.h> @interface UIWebView (ToFile) - (UIImage *)imageRepresentation; - (NSData *)PDFData; @end
// // UIWebView+ToFile.m // UIWebViewToFile // // Created by Tracy E on 13-6-10. // Copyright (c) 2013 EsoftMobile.com. All rights reserved. // #import "UIWebView+ToFile.h" #import <QuartzCore/QuartzCore.h> @implementation UIWebView (ToFile) - (UIImage *)imageRepresentation{ CGFloat scale = [UIScreen mainScreen].scale; CGSize boundsSize = self.bounds.size; CGFloat boundsWidth = boundsSize.width; CGFloat boundsHeight = boundsSize.height; CGSize contentSize = self.scrollView.contentSize; CGFloat contentHeight = contentSize.height; CGPoint offset = self.scrollView.contentOffset; [self.scrollView setContentOffset:CGPointMake(0, 0)]; NSMutableArray *images = [NSMutableArray array]; while (contentHeight > 0) { UIGraphicsBeginImageContextWithOptions(boundsSize, NO, 0.0); [self.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [images addObject:image]; CGFloat offsetY = self.scrollView.contentOffset.y; [self.scrollView setContentOffset:CGPointMake(0, offsetY + boundsHeight)]; contentHeight -= boundsHeight; } [self.scrollView setContentOffset:offset]; CGSize imageSize = CGSizeMake(contentSize.width * scale, contentSize.height * scale); UIGraphicsBeginImageContext(imageSize); [images enumerateObjectsUsingBlock:^(UIImage *image, NSUInteger idx, BOOLBOOL *stop) { [image drawInRect:CGRectMake(0, scale * boundsHeight * idx, scale * boundsWidth, scale * boundsHeight)]; }]; UIImage *fullImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return fullImage; } - (NSData *)PDFData{ UIViewPrintFormatter *fmt = [self viewPrintFormatter]; UIPrintPageRenderer *render = [[UIPrintPageRenderer alloc] init]; [render addPrintFormatter:fmt startingAtPageAtIndex:0]; CGRect page; page.origin.x=0; page.origin.y=0; page.size.width=600; page.size.height=768; CGRect printable=CGRectInset( page, 50, 50 ); [render setValue:[NSValue valueWithCGRect:page] forKey:@"paperRect"]; [render setValue:[NSValue valueWithCGRect:printable] forKey:@"printableRect"]; NSMutableData * pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData( pdfData, CGRectZero, nil ); for (NSInteger i=0; i < [render numberOfPages]; i++) { UIGraphicsBeginPDFPage(); CGRect bounds = UIGraphicsGetPDFContextBounds(); [render drawPageAtIndex:i inRect:bounds]; } UIGraphicsEndPDFContext(); return pdfData; } @end