Potrzebuję sposobu, aby wymusić wybraną drukarkę na UIPrintInteractionController, gdy jest prezentowany, przy użyciu już znanego PrinterID.AirPrint: Ustaw domyślną drukarkę w UIPrintInteractionController
UWAGA: W celu przeprowadzenia testów używam Printopia zainstalowany na moim „MacBook Pro”, która dzieli „Drukarka”
Zrobiłem test:
-(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
}
}
Gdy druk odbywa dzienniki aplikacji Poniższe ID drukarki:
\032Printer\[email protected]\032MacBook\032Pro._ipp._tcp.local.
Chcę zastąpić drukarkę tak mam zrobić w ten sposób:
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.printerId = @"\032Printer\[email protected]\032MacBook\032Pro._ipp._tcp.local.";
controller.printInfo = printInfo;
Jednak z jakiegoś powodu nie działa, UIPrintInteractionController nie wybiera drukarki zgodnie z oczekiwaniami, ale drukarka jest wyświetlana na liście drukarek.
Domyślam się, że problemem są dziwne znaki obecne w ID drukarki.
Ktoś wie, w jaki sposób kodowany jest tekst printInfo.printerId i jak ręcznie go ustawić?
Jeśli przechowuję drukarkę NSString * w urządzeniu ivar i ustawię ją ponownie przy następnej akcji drukowania, to działa, ale nie mogę wymusić ręcznej drukarki domyślnej według identyfikatora drukarki.
btw: Oczywiście, jeśli drukarka nie jest dostępna/osiągalny, wiem, że nie można wybrać ...
Dzięki, działa dla standardowych drukarek AirPrint. Problem dotyczy drukarki Printopia, która dołącza specjalny znak używany jako ikona drukarki. Na szczęście można go wyłączyć w ustawieniach Printopia. – Lubbo
Dobrze o tym wiedzieć! :) –