2012-04-11 7 views
1

Im Anschluss an die Frage von diesem Posten: Unable to display printer options with AirPrintiOS AirPrint - print mehrere URLs

Es gab ein paar Fragen, die ich hatte:

1) Eine der Antworten Controller.printItem auf eine URL zu setzen waren. Kann ich mehrere URLs festlegen? Grundsätzlich habe ich eine Reihe von URLs, die ich auf einmal drucken muss. Ist es möglich, controller.printitems auf ein Array von URLs zu setzen? Außerdem weiß ich, dass controller.printItem den Typ "Daten" hat. Wie kann ich also eine webbasierte Bild-URL in einen Typ "Daten" konvertieren?

2) Aus irgendeinem komischen Grund ist die doppelseitige Einstellung standardmäßig auf jedes Mal eingestellt, wenn ich den Druckdialog erreiche. Was ist die Variable, die ich einstellen muss? Es wäre toll, wenn ich dem Benutzer die Option einfach nicht zeigen könnte.

+0

bitte versuchen Sie den Verweis http://sugartin.info/2012/02/02/ios-print-functionality-to-print-using-airprinter/ –

Antwort

0

dieser Code Versuchen Sie helfen können Sie

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

danke dafür .. Ich sah den Code vor dem Posten aber meine Situation ist ein bisschen anders. Ich habe ein Webview, in dem, wenn ein Benutzer auf einen Link klickt, ich 5 verschiedene Seiten drucken muss (alle Seiten sind Web-URLs). Also, der Fluss: Der Nutzer klickt auf "Drucken" -> Ich erhalte dynamisch 5 URLs (alle URLs sind vollständige Seitenbilder) -> Ich muss alle 5 URLs zum Drucken senden. – tHeiMmOrTaL

+0

ich brauche nur eine einfache Möglichkeit, diese 5 URLs an den Drucker zu senden und der Airprint kümmert sich um alles. Aber sobald ich die URLs habe, wie konvertiere ich diese in NSData und wenn ich sie in NSData konvertiert habe, wie gebe ich mehrere URLs weiter? – tHeiMmOrTaL

0

ich seine späten wissen aber helfen könnte, wenn jemand dies muss: Array von URLs erstellen und zuweisen zu „printingItems“ Eigenschaft „UIPrintInteractionController“ -Klasse.