私のアプリでは、ユーザーにクーポンを作成してプレビューしてもらい、そのクーポンを印刷するオプションがあります。現在、クーポン部分のみを含めて画面をトリミングして印刷していますが、フルサイズの 8.5 x 11 に印刷しており、クーポンの背景が黒であるため、大量のインクを使用しています。これを変更して、紙の 2.5 x 3.5 インチのセクションにのみ印刷するにはどうすればよいでしょうか?
-(void)printer {
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
if(!controller){
NSLog(@"Couldn't get shared UIPrintInteractionController!");
return;
}
void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if(!completed && error){
NSLog(@"FAILED! due to error in domain %@ with error code %u",
error.domain, error.code);
}
};
CGRect rect;
rect=CGRectMake(0, 0, 320, 480);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context=UIGraphicsGetCurrentContext();
[self.tabBarController.view.layer renderInContext:context];
UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *img = [self cropImage:image rect:CGRectMake(20,70,279,359)];
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputPhoto;
printInfo.jobName = @"Your Coupon";
controller.printInfo = printInfo;
controller.showsPageRange = YES;
controller.printingItem = img;
[controller presentAnimated:YES completionHandler:completionHandler];
}