views:

68

answers:

0

Hi guys,

ok so here is what I want to do:

  • Load a PDF containing a vector graphic
  • Scale it up
  • Draw it to a graphics context
  • Create a UIImage from the result and present it

Everything works fine, except the fact that the graphic loses quality and looks pixelized :(

Here is the code where the scaling happens:

// PDF loaded before
CGPDFPageRef page = CGPDFDocumentGetPage (document, 1);

UIGraphicsBeginImageContext(CGSizeMake(width, height)); 

CGContextRef context = UIGraphicsGetCurrentContext();   
CGContextSaveGState(context);

CGRect rect = CGPDFPageGetBoxRect(page, kCGPDFCropBox);
float widthFactor = width/ rect.size.width; 
float heightFactor = height/ rect.size.height;
CGAffineTransform pdfTransform2 = CGAffineTransformMakeScale (widthFactor, heightFactor);
CGContextConcatCTM(context, pdfTransform2);

CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);

retValue = UIGraphicsGetImageFromCurrentImageContext();  
UIGraphicsEndImageContext();

I think the problem is that I can only rescale the context, not the actual PDF. Is there any other way to do that without quality loss?

Thank you so much for any hint!