我想在我的标准办公室打印机上打印尺寸为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“。
答案 0 :(得分:0)
JFYI:我的解决方案"一直在购买打印机(HP PhotoSmart)和一些照片纸,并通过优化图形调整特定打印机和特定类型纸张的输出,以便重要部分不会被切断。