AirPrint中的纸张尺寸错误

时间:2015-06-19 11:20:53

标签: ios airprint

在我的应用中,可以打印不同的照片尺寸。这样工作正常,但是对于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

- >这次正确的纸张尺寸。

1 个答案:

答案 0 :(得分:0)

您的代码似乎正在交换宽度和高度 - 您似乎正在尝试更改打印的方向。这不是方法:设置方向,请参阅UIPrintInfo.orientation

至于为什么你有时会得到不同的结果,我不确定,但我认为bestPaperForPage大小会受到所选打印机的离线/在线状态的影响(即,如果你在打印机之前调用bestPaperForPage已经联系过,除非您选择了照片打印类型,否则它将默认为A4。如果您希望默认值为4x6,请在UIPrintInfoOutputPhoto

上使用UIPrintInfo