如何打印一个没有被切断的UIImage?

时间:2014-03-13 18:28:40

标签: objective-c xamarin.ios airprint

我想在我的标准办公室打印机上打印尺寸为15x10厘米(6英寸x4英寸)的照片纸上的UIImage,该打印机的纸盘中有特定的纸张。

无论我做什么,图像都会被切断。如果它不包含文本数据和图像(它代表明信片),那将不会是什么大不了的事。因此,绝对有必要打印整个UIImage。

我尝试了不同的方法,目前我这样做:

var printInfo = UIPrintInfo.PrintInfo;
printInfo.OutputType = UIPrintInfoOutputType.Photo;
printInfo.Orientation = UIPrintInfoOrientation.Landscape;

float pageWidth = 5.90551181102362f * 72;
float pageHeight = 3.93700787401575f * 72;

var foo = new UIImageView();
foo.Frame = new RectangleF(0, 0, pageWidth, pageHeight);
foo.ContentMode = UIViewContentMode.ScaleAspectFill;
foo.Image = _postcard;

_printer = UIPrintInteractionController.SharedPrintController;
_printer.PrintInfo = printInfo;
_printer.ShowsPageRange = false;

_printer.PrintFormatter = foo.ViewPrintFormatter;

await _printer.PresentFromRectInViewAsync(_printButton.Frame, View, true);

正如您在使用MonoTouch时所看到的那样是C#,但它与Objective-C的逻辑相同。

我正在使用尺寸为15x10厘米的UIImageView,托盘中有15x10厘米的纸,但输出会被切断。

顺便说一句:我将(自动)选择的纸张及其属性打印到控制台,它说有一个432x288像素/点的可打印矩形,比我的目标格式要大一点(可能是iOS假设它应该使用另一种格式?)。

这让我疯狂......每一个提示都受到高度赞赏。

编辑:432x288点= 6 * 72 x 4 * 72 = 6 * 4“。

1 个答案:

答案 0 :(得分:0)

JFYI:我的解决方案"一直在购买打印机(HP PhotoSmart)和一些照片纸,并通过优化图形调整特定打印机和特定类型纸张的输出,以便重要部分不会被切断。