PDF 문서의 각 페이지를 PNG 이미지로 변환해야합니다. 이러한 이미지는 scrollView에 표시됩니다. 페이지 당 두 개의 이미지를 생성해야합니다. 하나는 화면 크기이고 다른 하나는 2.5 배입니다 (사용자가 scrollView를 확대 할 때 사용됩니다).PDF 페이지를 PNG 이미지로 변환 할 때 크래시가 발생합니다.
내 문제는 큰 이미지를 만들 때 메모리 경고 및 충돌이 발생한다는 것입니다. 나는 그것을 할 방법이 잘 알려져있다 :
CGRect pageRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox);
float pdfScale = 2.5*self.view.frame.size.height/pageRect.size.height;
pageRect.size = CGSizeMake(pageRect.size.width*pdfScale, pageRect.size.height*pdfScale);
UIGraphicsBeginImageContext(pageRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillRect(context,pageRect);
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0, pageRect.size.height);
CGContextScaleCTM(context, pdfScale,-pdfScale);
CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
문제는 아이폰 3G/3GS 및 아이팟 터치에서 발생합니다. 줌 배율을 2.5로 유지하면서 메모리 소비량을 어떻게 제한 할 수 있습니까?
감사합니다.
왜 페이지에 대한 정적 이미지를 만들어야합니까? 더 높은 줌 배율에서 필요에 따라 PDF 페이지를 다시 렌더링하지 않는 이유는 무엇입니까? –
위의 코드를 살펴보면 CropBox 페이지와 회전을 제대로 처리하지 못합니다. 자세한 내용은 여기를 참조하십시오 : http://ipdfdev.com/2011/03/23/display-a-pdf-page-on-the-iphone-and-ipad/. 메모리 문제와 관련하여 Letter 크기 페이지는 250 % 확대/축소 이미지로 변환되어 100 % 확대/축소 (96dpi)를 고려하면 2040x2640 픽셀의 이미지를 생성합니다. 32bpp (픽셀 당 4 바이트)에서 이미지는 약 20MB를 차지합니다. – iPDFdev
@BradLarson PDF 페이지를 더 큰 스케일로 "실시간으로"렌더링하는 것은 오래되었습니다. @SorinNistor 링크를 제공해 주셔서 감사합니다. –