2015-06-19 2 views
4

В моем приложении могут быть напечатаны различные размеры фотографий. Это работает нормально, но с iOS 8 размер бумаги всегда является буквой/A4, даже если отображается диалоговое окно печати, например, 5 "x7". Если пользователь снова выбирает размер бумаги, размер бумаги изменяется, например, 5 "x7".Неверный размер бумаги в AirPrint

Есть ли у кого-то такая же проблема?

Есть ли обходной путь?

Вот код:

- (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: Необходимая страница = (288,0 432,0) 2015-06-19 12: 22: 54.118 PhotoPrint [5955: 1225053] printInteractionController: selectPaper: выбрано UIPrintPaper = (612,0,792.0) 2015-06-19 12: 22: 54.118 PhotoPrint [ 5955: 1225053] - [PKPaperList matchedPaper: preferBorderless: withDuplexMode: didMatch:] paperToMatch = результат = MatchType = 0 2015-06-19 12: 23: 06,351 PhotoPrint [5955: 1225053]

-> неправильный размер бумаги письмо выбрано!


Теперь выберите бумагу снова:

printInteractionController: choosePaper: НЕОБХОДИМЫ PAGESIZE = (288.0,432.0) 2015-06-19 12: 23: 14,860 PhotoPrint [5955: 1225053] printInteractionController: choosePaper: выбрано UIPrintPaper = (360.0,504.0) 2015-06-19 12: 23: 14,860 PhotoPrint [5955: 1225053] - [PKPaperList matchedPaper: preferBorderless: withDuplexMode: didMatch:] paperToMatch = результат = MatchType = 0

-> на этот раз правильный размер бумаги.

+0

Оригинальный вопрос был о печати с AirPrint. Я думаю, что название может быть запутанным после редактирования, поэтому я пытаюсь перефразировать мой вопрос: как выбрать конкретный размер бумаги при печати с AirPrint на iOS? – palugu

+0

Если название теперь запутывает: почему бы просто не изменить его и не запутать?!?! –

ответ

0

Ваш код, по-видимому, меняет ширину и высоту - кажется, вы пытаетесь изменить ориентацию печати. Это не способ сделать это: установить ориентацию, см. UIPrintInfo.orientation

Что касается того, почему вы иногда получаете разные результаты, я не уверен, но полагаю, что на размер bestPaperForPage может влиять автономное/онлайн-состояние выбранного принтера (т. е. если вы вызываете bestPaperForPage до того, как принтер когда-либо был связан, он по умолчанию будет равен A4, если вы не выбрали тип фотопечати). Если вы хотите, чтобы значение по умолчанию было 4x6, используйте UIPrintInfoOutputPhoto на вашем UIPrintInfo