2012-12-19 52 views
3

我使用以下代码PDF颠倒

UIImage *CurImage=[UIImage imageWithContentsOfFile:[ImageArr objectAtIndex:i]]; 
UIView *ViewDraw=[[UIView alloc]initWithFrame:CGRectMake(0,10, pageSize, pageSize)]; 
ViewDraw.backgroundColor=[UIColor clearColor]; 
CGContextBeginPage (pdfContext,nil); 

//turn PDF upsidedown 
CGAffineTransform transform = CGAffineTransformIdentity; 
transform = CGAffineTransformMakeTranslation(0,CurImage.size.height); 
transform = CGAffineTransformScale(transform, 1.0, -1.0); 

CGContextConcatCTM(pdfContext, transform); 
int y = (pageSize - CurImage.size.height)/2; 
int x = (pageSize - CurImage.size.width)/2; 

[CurImage drawInRect:CGRectMake((ViewDraw.frame.width - curImage.frame.width)/2, 24, size.width, curImage.frame.height)]; 

//  CGContextDrawImage(pdfContext, CGRectMake(x,-y, CurImage.size.width, CurImage.size.height), CurImage.CGImage); 
CGContextEndPage (pdfContext); 
CurImage=nil; 

创建PDF但它产生倒置i.e.180度,有镜像。

这里有什么问题?

回答

3

打开PDF颠倒:

CGAffineTransform aCgAffTrans = CGAffineTransformMakeTranslation(0,892); //here the whole PDF page height should be given 
aCgAffTrans = CGAffineTransformScale(aCgAffTrans, 1.0, -1.0); 
CGContextConcatCTM(aCgPDFContextRef, aCgAffTrans); 

你正在提供一些随机的高度,而一些部分被拒绝了和其他人保持不变。所以会出现一个像效果镜子。

+0

您的原始标识变换会立即丢弃 - 只需在aCgAffTrans的声明中直接指定CGAffineTransformMakeTranslation的结果即可更清晰地表达出来。 – Adrian

+1

@Adrian:谢谢你,我编辑了我的回答:) –