2012-04-11 53 views
1

下面这个职位的问题: Unable to display printer options with AirPrint的iOS AirPrint功能 - 打印多个URL

有几个问题我有:

1)答案之一是对Controller.printItem设置为一个URL。同样,我可以设置多个网址吗?基本上,我有一套我需要一次打印的URL。是否可以将controller.printitems设置为一组URL?此外,我知道controller.printItem采用类型'数据',那么如何将基于Web的图像URL转换为类型'数据'?

2)出于某种奇怪的原因,默认情况下,每次到达打印对话框时双面都设置为打开。我需要设置该变量的变量是什么?如果我不能向用户显示选项,这将是一件好事。

+0

请尝试参考链接http://sugartin.info/2012/02/02/ios-print-functionality-to-print-using-airprinter/ – 2012-04-11 11:13:52

回答

0

试试这个代码可以帮助您

- (IBAction)btnPrintTapped:(id)sender { 
    NSData *imageData = UIImagePNGRepresentation(self.imgV.image); 
    [self printItem:imageData]; 
} 

#pragma mark - Printing 

-(void)printItem :(NSData*)data { 
    printController = [UIPrintInteractionController sharedPrintController]; 
    if(printController && [UIPrintInteractionController canPrintData:data]) { 
     printController.delegate = self; 
     UIPrintInfo *printInfo = [UIPrintInfo printInfo]; 
     printInfo.outputType = UIPrintInfoOutputGeneral; 
     printInfo.jobName = [NSString stringWithFormat:@""]; 
     printInfo.duplex = UIPrintInfoDuplexLongEdge; 
     printController.printInfo = printInfo; 
     printController.showsPageRange = YES; 
     printController.printingItem = data; 
     void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) { 
      if (!completed && error) { 
       //NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code); 
      } 
     }; 
     [printController presentFromBarButtonItem:self.item animated:YES completionHandler:completionHandler]; 
    } 
} 

- (BOOL)presentFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated completionHandler:(UIPrintInteractionCompletionHandler)completion { 
    return YES; 
} 

- (BOOL)presentFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated completionHandler:(UIPrintInteractionCompletionHandler)completion { 
    return YES; 
} 
+0

谢谢你..我实际上看到之前张贴代码但我的情况有点不同。我有一个webview,当用户点击链接时,我需要打印5个不同的页面(所有页面都是网址)。所以,流程:用户点击打印 - >我动态获得5个URL(所有URL都是整页图像) - >我需要发送所有5个URL来打印。 – tHeiMmOrTaL 2012-04-11 16:43:07

+0

我只需要一个简单的方法将这5个URL发送到打印机,并且Airprint负责处理所有事情。但是,一旦我有了URL,我该如何将其转换为NSData,并且一旦转换为NSData,我如何传递多个URL? – tHeiMmOrTaL 2012-04-11 18:02:16

0

我知道它的晚,但如果有人需要这可能帮助: 创建网址的阵列并为其分配“UIPrintInteractionController”级到“printingItems”属性。