CGPDFPageDrawingTransform不旋转页面

时间:2011-03-03 02:44:55

标签: iphone ipad

以下代码旨在显示PDF的页面,同时正确处理可能为每个页面指定的任何非零旋转角度。我的测试PDF文件有多个页面,其中一个具有180度旋转角度,代码正确检测,但调用CGPDFPageGetDrawingTransform(后跟CGContextContactCTM)无效。页面正在显示未旋转。我做错了什么?

CGContextSaveGState(context);

CGRect drawRect=self.bounds;
CGRect cropBox = CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox);

int rotationAngle=CGPDFPageGetRotationAngle(pdfPage);

if (kDebug>1) {
    NSLog(@"***** page rotation angle is %d",rotationAngle);
}

CGContextTranslateCTM(context, drawRect.origin.x, drawRect.origin.y);

CGAffineTransform transform = CGPDFPageGetDrawingTransform(pdfPage, kCGPDFCropBox, cropBox, rotationAngle, true);
CGContextConcatCTM (context, transform);

float xScaleFactor=drawRect.size.width / cropBox.size.width;
float yScaleFactor=drawRect.size.height / cropBox.size.height;

CGContextTranslateCTM(context, -CGRectGetMinX(cropBox), CGRectGetMaxY(cropBox)*yScaleFactor);
CGContextScaleCTM(context, xScaleFactor, -yScaleFactor);

CGContextClipToRect(context, cropBox);
CGContextDrawPDFPage(context, pdfPage);

CGContextRestoreGState(context);

谢谢,

//斯科特

1 个答案:

答案 0 :(得分:1)

因此,在仔细重新阅读CGPDFPageGetDrawingTransform的API之后,我发现page的/ ROTATE属性的值被添加到您在方法调用中指定的旋转角度。在我上面的情况中,页面的/ ROTATE发生在180.在rotationAngle var中抓取它并传递它以获得转换。所以,180 + 180 = 360 =无可见旋转。

我现在调用GPDFPageGetDrawingTransform,旋转角度为0.0。添加/ ROTATE中的任何内容,瞧,我得到了正确的结果。