0

在我的應用程序中,我有用戶製作優惠券,預覽它,並且他們可以選擇打印該優惠券。現在它只是裁剪屏幕以僅包含優惠券部分並進行打印,但它正在打印爲全尺寸8.5 x 11,並且使用大量墨水,因爲優惠券在背景中爲黑色。這怎麼可能改變只打印要說到紙張的2.5×3.5「節?更改iOS中圖像的打印尺寸

-(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]; 


} 

回答

1

聽起來就像秤打印到輸出介質的全尺寸的圖像,你可以嘗試把您的優惠券圖像轉化成更大的圖像並打印出合成圖像我沒有測試這個代碼,但它是我做剪裁圖像的一種改編方式

UIImage *img = [self cropImage:image rect:CGRectMake(20,70,279,359)]; 
// Some size for the full image. 
// Obviously you need to experiment with this to get the size right 
CGSize targetSize = CGSizeMake(800, 1050); 

// This will put the image in the upper left corner 
// you could put it in the middle or wherever 
CGPoint imageOrigin = CGPointMake(0, 0); 
CGRect imageRect = CGRectMake(imageOrigin.x, imageOrigin.y, img.size.width, img.size.height); 

// Always scale to the screen scale to get the sharpest images even at the expense of size. 
UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0); 
[img drawInRect:imageRect]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

// print configuration stuff from your code example goes here... 

controller.printingItem = newImage;