将多页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);

}
展开阅读全文

没有更多推荐了,返回首页