Как нарисовать PDF в CGContext с более высоким разрешением? - PullRequest
3 голосов
/ 03 августа 2011

Я написал представление для отображения страницы PDF:

-(UIPDFRenderView*) initWithFrame:(CGRect)frame withDocument:(CGPDFDocumentRef*)document withPageNumber:(int)pageNumber
{        
    if (self) 
    {
        page = CGPDFDocumentGetPage (*document, pageNumber);

        pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
        pdfScale = (CGRectGetWidth(frame)/pageRect.size.width);

        rect = frame;
        self = [super initWithFrame:CGRectMake(CGRectGetMinX(frame),
                                               CGRectGetMinY(frame),
                                               CGRectGetWidth(frame), 
                                               CGRectGetHeight(pageRect) * pdfScale)];
    }
    return  self;
}


-(void) drawRect:(CGRect)rect
{
    [self displayPDFPageWithContext:UIGraphicsGetCurrentContext()];    
}

-(void) displayPDFPageWithContext:(CGContextRef)context
{
    CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
    CGContextFillRect(context, self.bounds);

    CGContextSaveGState(context);
    CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
    CGContextScaleCTM(context, pdfScale,-1*pdfScale);

    CGContextDrawPDFPage (context, page);
}

Я использую одно из этих представлений для каждой страницы документа PDF и добавляю их в acrollview.Проблема в том, что если я увеличу масштаб, страница будет пиксельной.Не удивительно, потому что я использую контекст экрана для рендеринга PDF.Есть ли возможность визуализировать этот pdf с двойным разрешением, чтобы zoomin имел коэффициент 2?

1 Ответ

1 голос
/ 10 августа 2011

Хорошо, я получил решение, я рендерил его в исходном размере и запускаю скроллвью с низким масштабом, который ширина pdf соответствует ширине скроллвью.С помощью этого метода я могу увеличить до исходного размера (масштаб 1).

...