在我的应用中,可以打印不同的照片尺寸。这样工作正常,但是对于iOS 8,即使打印对话框显示例如5英寸x7英寸,纸张尺寸也始终为letter / A4。如果用户再次选择纸张尺寸,则纸张尺寸变为例如5 “×7”。
有人有同样的问题吗?
有解决方法吗?
以下是代码:
- (UIPrintPaper *)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray *)paperList
{
CGSize PageSize = ((PPPage *)[document.pages objectAtIndex:0]).paperSize;
if (PageSize.width > PageSize.height) {
float w = PageSize.width;
PageSize.width = PageSize.height;
PageSize.height = w;
}
NSLog(@"printInteractionController:choosePaper: Needed Pagesize = (%.1f,%.1f)",PageSize.width,PageSize.height);
UIPrintPaper *retPaper = [UIPrintPaper bestPaperForPageSize:PageSize withPapersFromArray:paperList];
NSLog(@"printInteractionController:choosePaper: chosen UIPrintPaper = (%.1f,%.1f)",retPaper.paperSize.width,retPaper.paperSize.height);
return retPaper;
}
日志输出:
2015-06-19 12:22:53.474 PhotoPrint [5955:1225053] printInteractionController:choosePaper:Needed Pagesize =(288.0,432.0) 2015-06-19 12:22:54.118 PhotoPrint [5955:1225053] printInteractionController:choosePaper:selected UIPrintPaper =(612.0,792.0) 2015-06-19 12:22:54.118 PhotoPrint [5955:1225053] - [PKPaperList matchedPaper:preferBorderless:withDuplexMode:didMatch:] paperToMatch = result = matchType = 0 2015-06-19 12:23:06.351 PhotoPrint [5955:1225053]
- >选择了错误的纸张尺寸字母!
现在再次选择纸张:
printInteractionController:choosePaper:Needed Pagesize =(288.0,432.0) 2015-06-19 12:23:14.860 PhotoPrint [5955:1225053] printInteractionController:choosePaper:selected UIPrintPaper =(360.0,504.0) 2015-06-19 12:23:14.860 PhotoPrint [5955:1225053] - [PKPaperList matchedPaper:preferBorderless:withDuplexMode:didMatch:] paperToMatch = result = matchType = 0
- >这次正确的纸张尺寸。
答案 0 :(得分:0)
您的代码似乎正在交换宽度和高度 - 您似乎正在尝试更改打印的方向。这不是方法:设置方向,请参阅UIPrintInfo.orientation
至于为什么你有时会得到不同的结果,我不确定,但我认为bestPaperForPage大小会受到所选打印机的离线/在线状态的影响(即,如果你在打印机之前调用bestPaperForPage已经联系过,除非您选择了照片打印类型,否则它将默认为A4。如果您希望默认值为4x6,请在UIPrintInfoOutputPhoto
UIPrintInfo