2012-10-15 13 views
5

içinde ayarla Seçili bir yazıcıyı kullanarak, seçili Yazıcıyı UIPrintInteractionController'a zorlamak için bir yol kullanmam gerekiyor.AirPrint: Varsayılan yazıcıyı UIPrintInteractionController

NOT: Baskı tamamlandığında

-(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 
} 
} 

: Ben Printopia ben bu testi yaptık "Yazıcı"

paylaşan benim "MacBook Pro" yüklü kullanıyorum testleri yapmak için , Yazıcı kimliği aşağıdaki uygulamanın günlükleri:

\032Printer\[email protected]\032MacBook\032Pro._ipp._tcp.local. 

Ben bu yüzden bu şekilde yapmak gerekiyordu yazıcıyı geçersiz kılmak istiyorum:

UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
printInfo.printerId = @"\032Printer\[email protected]\032MacBook\032Pro._ipp._tcp.local."; 
controller.printInfo = printInfo; 

Ancak bazı nedenlerle çalışmadığı için UIPrintInteractionController yazıcıyı beklendiği gibi seçmez, ancak yazıcı yazıcı listesinde gösterilir.

Sorun, Yazıcı Kimliği'nde bulunan garip karakterlerdir.

PrintInfo.printerId'in nasıl kodlandığını ve nasıl manuel olarak ayarlanacağını herkes bilir?

NSString * printerId öğesini bir ivar'da depolar ve bir sonraki yazdırma eyleminde yeniden ayarlarsa, ancak varsayılan bir yazıcıyı yazıcı kimliği ile elle zorlayamıyorum.


arada: yazıcı/mevcut erişilebilir değilse Açıkçası, ben

cevap

7

programlı varsayılan yazıcıyı ayarlamak için, sadece ayarlamanız gerekir ... bu seçilemez biliyorum printInfo dosyasının printID'si ._ipp._tcp.local'a. PrinterName, UIPrinterInteractionController açılır penceresindeki yazıcılar listesinde nasıl görüntülendiği ile tam olarak aynı olmalıdır. Örneğin, LANIERCOLOR315 [00: 80: A3: 95: 2D: 41] olarak görüntülenen bir yazıcı için, yazıcı kimliği LANIERCOLOR315 [00:80:A3:95:2D:41]._ipp._tcp.local'dur. Özel karakterleri kodlamak zorunda değilsiniz. Çerçeve yapacaktır.

+0

Teşekkürler, standart AirPrint yazıcıları için çalışır. Sorun, yazıcı simgesi olarak kullanılan özel bir karakter ekleyen Printopia'dır. Neyse ki Printopia ayarlarında devre dışı bırakmak mümkündür. – Lubbo

+0

Bunu bilmek güzel! :) –

İlgili konular