Сбой при преобразовании страниц PDF в изображения PNG - PullRequest
0 голосов
/ 12 апреля 2011

Мне нужно преобразовать каждую страницу документа PDF в изображения PNG.Эти изображения затем отображаются в scrollView.Мне нужно создать два изображения на странице: одно по размеру экрана, а другое в 2,5 раза больше (оно используется, когда пользователь увеличивает масштаб scrollView).

Моя проблема заключается в том, что у меня иногда появляются предупреждения и сбои памятикогда я создаю большие изображения.То, как я это делаю, хорошо известно:


    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();

Проблема возникает на iPhone 3G / 3GS и iPod Touch.Как я могу ограничить потребление памяти, сохраняя масштаб увеличения 2,5?

Спасибо!

1 Ответ

0 голосов
/ 12 апреля 2011

Вы можете рассмотреть возможность использования веб-просмотра для отображения PDF, который решает проблемы масштабирования и памяти.По сути, рендеринг векторного формата PDF в растровое изображение PNG большого размера, возможно, не является наиболее подходящим решением для проектирования.Не зная, каковы ваши требования к PNG, это трудно комментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...