一开始以为做不到,不过iOS原生的库还是挺强大的。
直接上Code吧
- -(void) createJPGsFromPDF:(NSString *)fromPDFName
- {
- if (fromPDFName == nil || [fromPDFName isEqualToString:@""]) {
- return;
- }
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDir = [paths objectAtIndex:0];
- NSString *docPath = [documentsDir stringByAppendingPathComponent:fromPDFName];
- NSURL *fromPDFURL = [NSURL fileURLWithPath:docPath];
- CGPDFDocumentRef fromPDFDoc = CGPDFDocumentCreateWithURL((CFURLRef) fromPDFURL);
- // Get Total Pages
- int pages = CGPDFDocumentGetNumberOfPages(fromPDFDoc);
- // Create Folder for store under "Documents/"
- NSError *error = nil;
- NSFileManager *fileManager = [[NSFileManager alloc] init];
- NSString *folderPath = [documentsDir stringByAppendingPathComponent:[fromPDFName stringByDeletingPathExtension]];
- [fileManager createDirectoryAtPath:folderPath withIntermediateDirectories:YES attributes:nil error:&error];
- [fileManager release];
- int i = 1;
- for (i = 1; i <= pages; i++) {
- CGPDFPageRef pageRef = CGPDFDocumentGetPage(fromPDFDoc, i);
- CGPDFPageRetain(pageRef);
- // determine the size of the PDF page
- CGRect pageRect = CGPDFPageGetBoxRect(pageRef, kCGPDFMediaBox);
- // renders its content.
- UIGraphicsBeginImageContext(pageRect.size);
- CGContextRef imgContext = UIGraphicsGetCurrentContext();
- CGContextSaveGState(imgContext);
- CGContextTranslateCTM(imgContext, 0.0, pageRect.size.height);
- CGContextScaleCTM(imgContext, 1.0, -1.0);
- CGContextSetInterpolationQuality(imgContext, kCGInterpolationDefault);
- CGContextSetRenderingIntent(imgContext, kCGRenderingIntentDefault);
- CGContextDrawPDFPage(imgContext, pageRef);
- CGContextRestoreGState(imgContext);
- //PDF Page to image
- UIImage *tempImage = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- //Release current source page
- CGPDFPageRelease(pageRef);
- // Store IMG
- NSString *imgname = [NSString stringWithFormat:@"fromPDFName_%d.jpg", i];
- NSString *imgPath = [folderPath stringByAppendingPathComponent:imgname];
- [UIImageJPEGRepresentation(tempImage, 1.0) writeToFile:imgPath atomically:YES];
- }
- CGPDFDocumentRelease(fromPDFDoc);
- }