使用AirPrint打印UIImage会导致截断内容

我使用AirPrint打印出UIImage但边距不正确。 这是打印时的样子:
打印输出的照片

有什么办法可以使它完全适合纸张?

以下是所要求的代码:

  UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController]; //pic.delegate = del; UIPrintInfo *printInfo = [UIPrintInfo printInfo]; printInfo.outputType = UIPrintInfoOutputGeneral; printInfo.jobName = [NSString stringWithFormat:@"New Ticket"]; pic.printInfo = printInfo; pic.printingItem = [UIImage imageWithContentsOfFile:path]; void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { if (!completed && error) { UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Error." message:[NSString stringWithFormat:@"An error occured while printing: %@", error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [av show]; [av release]; } }; [pic presentAnimated:YES completionHandler:completionHandler]; 

你最好的办法是将图像缩小到打印图像的比例,这样你就可以在页面上看到整个图像。

有几种方法可以做到这一点,所以我只是告诉你我会这样做的方式。 我维护一个名为ANImageBitmapRep的类,它有几种不同types的图像缩放。 您想要的缩放types可以保留整个图像,但将其居中放置在特定大小的矩形内。 首先,您必须将ANImageBitmapRep源文件添加到您的项目,并#import ANImageBitmapRep.h

 #import "ANImageBitmapRep.h" 

然后,像这样缩放图像:

 pic.printingItem = [[UIImage imageWithContentsOfFile:path] imageFittingFrame:CGSizeMake(478, 640)]; 

您可以将CGSizeMake(x, y)更改为任何您想要的,以调整缩放的图像的比例和分辨率。