【问题标题】:Change Printed Size of Image in iOS在 iOS 中更改图像的打印尺寸
【发布时间】:2014-02-15 19:24:05
【问题描述】:

在我的应用程序中,我让用户制作优惠券并进行预览,然后他们可以选择打印优惠券。现在它只是缩小屏幕以仅包含优惠券部分并打印,但它打印到全尺寸 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];


}

【问题讨论】:

    标签: ios uiprintpagerenderer uiprintformatter uiprintinteractioncntrler


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 2014-10-31
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 2011-06-15
      • 2021-03-04
      • 1970-01-01
      • 2012-01-05
      • 2013-11-17
      相关资源
      最近更新 更多