如何绘制PDF到具有更高分辨率的CGContext



我写了一个视图来呈现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以使缩放到2倍?

好的,我得到了解决方案,我渲染它的原始大小,并初始化一个低比例的scollview, pdf的宽度适合scrollview的宽度。使用这个方法,我可以缩放到原来的大小(比例为1)。

相关内容

  • 没有找到相关文章

最新更新