Рисование изображения в PDF не позволяет нарисовать изображение с преобразованием и выводит неверно - PullRequest
0 голосов
/ 22 января 2010

У меня проблема с рисованием изображений в 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? Как мы можем решить, куда поместить изображение в PDF, если мы не зависим от X, Y? Каков точный метод рисования изображения в PDF с вращением, масштабом?

Изображение, когда я вставляю изображение в полосу прокрутки UIWebView. http://www.freeimagehosting.net/">

Изображение, когда я рисую изображение в PDF.
http://www.freeimagehosting.net/">

1 Ответ

1 голос
/ 03 февраля 2010
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;
...