0

PDFでの画像の描画に問題があります。私は画像にスケーリング、回転、移動などを適用し、その画像をPDFに描画します。しかし、描画は正しく出力されていません。画像を回転させると、拡大縮小するだけで回転しません。

ここでは、さらに詳しく説明します 。UIWebViewに画像を配置して、PDF上で画像の偽の効果を正確に作成します。次に、PDFを作成しながらUIWebViewにあるPDFに画像を描画します。

しかし、多くの変換が適用された修正画像を使用してPDFを作成すると、画像のスケールが回転しません。

ここで、img_copyrightはUIImageViewを継承するカスタムクラスです。

CGFloat orgY = (newY-whiteSpace)+img_copyright.frame.size.height;
CGFloat modY = pageRect.size.height-orgY;

CGFloat orgX = img_copyright.frame.origin.x-PDF_PAGE_PADDING_WIDTH;
CGFloat modX = orgX;

//We're getting X,Y of the image here to decide where to put the image on PDF.


CGRect drawRect = CGRectMake (modX, modY, img_copyright.frame.size.width, img_copyright.frame.size.height);

//Preparing the rectangle in which image is to be drawn.


CGContextDrawImage(pdfContext, drawRect, [img_copyright.image CGImage]);
    [img_copyright release];

// Actually drawing the image.

しかし、PDF画像が正しく描画されていないのを見ると。

X、Yに基づいた画像描画による問題ですか?X、Yに依存しない場合、PDFのどこに画像を配置するかをどのように決定できますか?回転、縮尺でPDFに画像を描画する正確な方法は何ですか?

UIWebViewのスクロールバーに画像を挿入したときの画像。http://www.freeimagehosting.net/">

PDFに画像を描画するときの画像。
http://www.freeimagehosting.net/">

4

1 に答える 1

1
CGFloat angleInRadians =-1*Angle* (M_PI / 180.0);
CGAffineTransform transform=CGAffineTransformIdentity;

transform = CGAffineTransformMakeRotation(angleInRadians);
//transform = CGAffineTransformMakeScale(1, -1);
//transform =CGAffineTransformMakeTranslation(0,80);

CGRect rotatedRect = CGRectApplyAffineTransform(CGRectMake(0,0,Image.size.width,Image.size.height), transform);

 UIGraphicsBeginImageContext(rotatedRect.size);
 //[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
 CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0,rotatedRect.size.height);
 CGContextScaleCTM(UIGraphicsGetCurrentContext(),1, -1); 

 //CGContextTranslateCTM(UIGraphicsGetCurrentContext(), +(rotatedRect.size.width/2),+(rotatedRect.size.height/2));

 CGContextTranslateCTM(UIGraphicsGetCurrentContext(), (rotatedRect.origin.x)*-1,(rotatedRect.origin.y)*-1);
 CGContextRotateCTM(UIGraphicsGetCurrentContext(), angleInRadians);
 //CGContextTranslateCTM(UIGraphicsGetCurrentContext(), -(rotatedRect.size.width/2),-(rotatedRect.size.height/2));

 CGImageRef temp = [Image CGImage];

 CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, Image.size.width,Image.size.height), temp);

 //CGContextRotateCTM(UIGraphicsGetCurrentContext(), -angleInRadians);
 UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();

 return viewImage;
于 2010-02-03T10:04:52.037 に答える