将多页PDF文件转换为多张JPG图片

一开始以为做不到,不过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);
    
}

猜你喜欢

转载自woniu1983.iteye.com/blog/1767008