iOS 4: Как мне смоделировать принтер А4? - PullRequest
4 голосов
/ 21 января 2011

Я использую печать в приложении для iOS.У меня есть приложение для печати прокси на Mac для физического тестового принтера, который является принтером US Letter.Имитатор принтера, который поставляется вместе с имитатором iOS, по умолчанию также имеет значение US Letter.

У кого-нибудь есть предложения по тестированию бумаги других размеров по умолчанию?

Спасибо!

Ответы [ 3 ]

6 голосов
/ 26 февраля 2011

Если я правильно понял функции печати на iOS - и это большое , если - тогда Print Simulator настроится на US Letter или A4 в зависимости от размеров отправляемого вами сообщения.Таким образом, если вы отправите ему что-то размером A4, он выберет A4, а если вы отправите ему что-то размером с американское письмо, он выберет американское письмо.

Однако, как я обнаружил при реальной печати, это не всегда работало.Чтобы понять это правильно, я обнаружил, что для iOS явно нужно выбрать размер бумаги А4.Это делается в printInteractionController: choosePaper: метод в делегате UIPrintInteractionController (см. Код ниже).Если кто-то там понимает это лучше, пожалуйста, напишите.

В более общем смысле (и немного отошел от вопроса ...), подход, который я выбрал для печати, заключается в том, чтобы иметь настройку приложения для US Letter или A4.Когда приложение запускается впервые, оно проверяет, является ли оно США (путем тестирования [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode]) и, если да, выбирает US Letter.В противном случае это А4.Пользователь может изменить это.(Я разрешаю пользователю экспортировать PDF-файлы, так что, скажем, если она британская пользователь, отправляющий PDF-файлы друзьям из США, она может заставить их выглядеть правильно.)

Для печати я сначала создаю PDF-файл формата A4 или US Letter.Пример кода Apple проведет вас через это для размера буквы США.Для формата A4 вам нужно установить размеры PDF около 595,4 x 841,7.(Для работы с другими размерами обратите внимание, что эти числа указаны в точках, где плотность точек равна 72 dpi, т.е. вы берете размер в дюймах и умножаетесь на 72.) Затем я использую setPrintingItem: в UIPrintInteractionController с NSURL для PDF.

Мне показалось, что печатная документация для iOS довольно сложная, поэтому не исключено, что доступен более простой / лучший / более надежный подход к решению A4 / US Letter и т. Д.Но, надеюсь, кое-что из того, что я здесь написал, поможет.

Код делегата

// code in the UIPrintInteractionController delegate
// The [Shared settings] object returns paperWidth and paperHeight depending on the app wide A4 or US Letter setting
- (UIPrintPaper *)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray *)paperList
{
    CGSize pageSize = CGSizeMake([[Settings shared] paperWidth], [[Settings shared] paperHeight]);
    return [UIPrintPaper bestPaperForPageSize:pageSize withPapersFromArray:paperList];
}

Создание кода PDF

UIGraphicsBeginPDFContextToFile(CGRectMake(0.0, 0.0, [[Settings shared] paperWidth], [[Settings shared] paperHeight]), nil);
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0.0, 0.0, [[Settings shared] paperWidth], [[Settings shared] paperHeight]), nil);

// create the PDF

UIGraphicsEndPDFContext();
1 голос
/ 29 июня 2013

Это довольно просто! В окне симулятора принтера на вашем Mac вы найдете значок «Загрузить бумагу». Таким образом, вы можете выбрать размер бумаги по умолчанию для любого моделируемого принтера. Вы можете определить альтернативный размер, если формат печати документа вашего приложения недоступен!

0 голосов
/ 06 мая 2011

В соответствии с документацией Apple :

Если тип вывода - UIPrintInfoOutputPhoto, размер бумаги по умолчанию - 4x6 или A6 или другой стандартный размер, в зависимости от локали;если тип вывода UIPrintInfoOutputGeneral или UIPrintInfoOutputGrayscale, формат бумаги по умолчанию - US Letter (8 1/2 на 11 дюймов) или A4 или какой-либо другой стандартный размер, в зависимости от локали.

Итак, я 'Я предполагаю, что если вы измените локаль, вы сможете проверить печать на A4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...