渲染PDF页面,显示屏幕边缘的页面指南和日期

时间:2013-02-09 17:05:07

标签: ios

我试图渲染pdf文档的页面。在Adobe Reader中打开pdf会正确显示页面。当我尝试将其渲染到视图中时,我会在屏幕边缘获得额外的“项目”。它们看起来像指南行和页面创建日期。我尝试过使用所有PDFBox选项,但我找不到合适的选项。我正在使用TiledPDFView类来呈现页面。它使用CATiledLayer类。以下是相关方法。

-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    CGContextSetRGBFillColor(ctx, 1.0,1.0,1.0,1.0);
    CGContextFillRect(ctx, self.bounds);
    CGContextSaveGState(ctx);
    CGContextTranslateCTM(ctx, 0.0, self.bounds.size.height);
    CGContextScaleCTM(ctx, 1.0, -1.0);
    //I've tried many options in the PDFBox parameter.
    CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(pdfPage, kCGPDFCropBox, self.bounds, 0, false));
    CGContextDrawPDFPage(ctx, pdfPage);
    CGContextRestoreGState(ctx);
}

我真的不确定如何删除这些指南。这可能只是我的问题。

The Image!

1 个答案:

答案 0 :(得分:1)

我能够通过不使用CGPDFPageGetDrawingTransform方法并自己进行转换来解决这个问题。我找到了一些代码,我将在这里分享以供将来参考。我不记得我从哪里得到了代码:(。

-(void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextFillRect(context, rect);
    CGContextGetCTM(context);
    CGContextScaleCTM(context,1,-1);
    CGContextTranslateCTM(context, 0, -rect.size.height);
    CGRect mediaRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox);
    CGContextScaleCTM(context, rect.size.width/mediaRect.size.width, rect.size.height / mediaRect.size.height);
    CGContextTranslateCTM(context, -mediaRect.origin.x, -mediaRect.origin.y);
    CGContextDrawPDFPage(context, pdfPage);
}