I'm converting a PDF page into a UIImage. While doing so, I lose the image quality. Need help in getting high quality images.
Code to generate UIImage
-(UIImage *)imageForPage:(int)pageNumber { CGPDFPageRef pdfPageRef = [self pdfReferenceForPage:pageNumber]; CGSize pageSize = [self sizeOfPage:pageNumber]; //UIGraphicsBeginImageContext(pageSize); UIGraphicsBeginImageContextWithOptions(pageSize, NO, 0.0); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetInterpolationQuality(context, kCGInterpolationHigh); CGContextTranslateCTM(context, 0.0, pageSize.height); CGContextScaleCTM(context, 1.0, -1.0); CGContextSaveGState(context); CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(pdfPageRef, kCGPDFCropBox, CGRectMake(0, 0, pageSize.width, pageSize.height), 0, true); CGContextConcatCTM(context, pdfTransform); CGContextDrawPDFPage(context, pdfPageRef); CGContextRestoreGState(context); UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return resultingImage; } - (void)saveImage { UIImage *image = [self imageForPage:1]; [UIImageJPEGRepresentation(image, 1.0) writeToFile:filePath atomically:YES]; }
Image comparison
Original PDF

Image from PDF

----------
EDIT: CODE WITH CHANGES
float dpi = 100.0 / 72.0; CGPDFPageRef pdfPageRef = [self pdfReferenceForPage:pageNumber]; CGSize pageSize = [self sizeOfPage:pageNumber]; pageSize.width = pageSize.width * dpi; pageSize.height = pageSize.height * dpi; UIGraphicsBeginImageContext(pageSize); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetInterpolationQuality(context, kCGInterpolationHigh); CGContextTranslateCTM(context, 0.0, pageSize.height); CGContextScaleCTM(context, dpi, -dpi); CGContextSaveGState(context); //CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(pdfPageRef, kCGPDFCropBox, CGRectMake(0, 0, pageSize.width, pageSize.height), 0, true); //CGContextConcatCTM(context, pdfTransform); CGContextDrawPDFPage(context, pdfPageRef); CGContextRestoreGState(context); UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return resultingImage;