我一直在使用 UIPrintInteractionController 在我的应用程序中打印图像并且效果很好,因为我可以自定义页面以便它以适当的边距打印。
我正在尝试使用 UIActivityViewController 来做同样的事情,但是我遇到了一些障碍 - 每当我在 activityItems 中传入 UIImage 时,打印活动就变得可用,但是当它打印时没有边距,我不确定如何自定义它。我尝试使用 UIMarkupTextPrintFormatter,但是它会将图像打印在两页上,并且尺寸过大,因此部分图像被页面剪掉了。当我以 NSData 对象的形式传入图像时,UIPrintInteractionController 似乎适当地调整了它的大小。
这是我试图传递给activityItems的内容:
NSString *markupText = [NSString stringWithFormat:@"<html><body><img src='%@'></body></html>",self.imgURL]; //imgURL is the url of the image on the internet
UIMarkupTextPrintFormatter *htmlPrintF = [[UIMarkupTextPrintFormatter alloc] initWithMarkupText:markupText];
htmlPrintF.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
htmlPrintF.maximumContentWidth = 6 * 72.0;
理想情况下,我不想传递图像 URL,因为当图像已经下载并显示一次并保留在 UIImage 对象中时,它会占用时间下载图像。上面的代码为我提供了适当的边距,但图像的大小不合适以适合页面。
回到使用 UIPrintInteractionController 并放弃 UIActivityViewController 会更容易,但是我希望将所有东西都放在一个地方,在 UIActivityViewController 中。
关于使用 UIActivityViewController 时如何控制边距/图像大小的任何想法?