Мені потрібен спосіб змусити вибраний принтер до UIPrintInteractionController, коли він буде представлений, використовуючи вже відомий принтер.
ПРИМІТКА: Щоб зробити тести, я використовую Printopia, встановлений на моєму "MacBook Pro", який використовує "Принтер"
Я зробив цей тест:
-(IBAction)print:(id)sender
{
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
UIPrintInteractionCompletionHandler completionHandler = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
NSLog(@"Selected Printer ID: %@",printController.printInfo.printerID);
};
NSString* path = [[NSBundle mainBundle] pathForResource:@"TestImage" ofType:@"png"];
NSURL* imageURL = [NSURL fileURLWithPath:path isDirectory:NO];
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputPhoto;
printInfo.jobName = @"Image print";
controller.printInfo = printInfo;
controller.printingItem = imageURL;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
[controller presentFromBarButtonItem:self.printButton animated:YES completionHandler:completionHandler]; // iPad
}
else
{
[controller presentAnimated:YES completionHandler:completionHandler]; // iPhone
}
}
Коли друк буде виконано, додаток реєструє наступний ідентифікатор принтера:
32Printer 32@ 32MacBook 32Pro._ipp._tcp.local.
Я хочу перевизначити принтер, тому я повинен робити так:
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.printerId = @" 32Printer 32@ 32MacBook 32Pro._ipp._tcp.local.";
controller.printInfo = printInfo;
Але з якоїсь причини він не працює, UIPrintInteractionController не вибирає принтер, як очікувалося, але принтер відображається у списку принтерів.
Напевно, проблема полягає в дивовижних символах, які є в ID принтера.
Хто-небудь знає, як кодується printInfo.printerId і як його вручну встановити?
Якщо я збережу NSString * printerId в ivar і встановлює його знову на наступну дію друку, але я не можу застосувати принтер за замовчуванням за допомогою Id принтера вручну.
btw: Очевидно, якщо принтер недоступний / доступний, я знаю, що його не можна вибрати ...
Відповіді:
7 для відповіді № 1Щоб встановити типовий принтерпрограмно, вам потрібно лише встановити printID принтера на ._ipp._tcp.local. Назва_принтера має бути точно таким же, як і його відображення у списку принтерів, які відображаються у вікні UIPrinterInteractionController. Наприклад, для принтера, який відображається як LANIERCOLOR315 [00: 80: A3: 95: 2D: 41], принтер LANIERCOLOR315 [00:80:A3:95:2D:41]._ipp._tcp.local
. Вам не потрібно кодувати спеціальні символи. Структура зробить це.