Objective-C code for AirPrint

后端 未结 2 815
既然无缘
既然无缘 2020-12-04 18:30

How can make a IBAction method for printing a UITextView with AirPrint in objective-c?

相关标签:
2条回答
  • 2020-12-04 18:54

    Check whether printing is available:

    if ([UIPrintInteractionController isPrintingAvailable])
    {
        // Available
    } else {
        // Not Available
    }
    

    Print after button click:

    -(IBAction) buttonClicked: (id) sender;
    {
        NSMutableString *printBody = [NSMutableString stringWithFormat:@"%@, %@",self.encoded.text, self.decoded.text];
        [printBody appendFormat:@"\n\n\n\nPrinted From *myapp*"];
    
         UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
         pic.delegate = self;
    
         UIPrintInfo *printInfo = [UIPrintInfo printInfo];
         printInfo.outputType = UIPrintInfoOutputGeneral;
         printInfo.jobName = self.titleLabel.text;
         pic.printInfo = printInfo;
    
         UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc] initWithText:printBody];
         textFormatter.startPage = 0;
         textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
         textFormatter.maximumContentWidth = 6 * 72.0;
         pic.printFormatter = textFormatter;
         [textFormatter release];
         pic.showsPageRange = YES;
    
         void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
         ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
         if (!completed && error) {
         NSLog(@"Printing could not complete because of error: %@", error);
         }
         };
    
        [pic presentFromBarButtonItem:self.rightButton animated:YES completionHandler:completionHandler];
    
    }
    

    Originally posted by '87vert' at iPhone Dev SDK: Airprint Tutorial - Simple Print File

    0 讨论(0)
  • 2020-12-04 19:01

    The following method uses the name of the file to be printed and also the bar button code from where you want the airprint popup to be shown. It works for me and im sure will be helpfull

    -(void)printJob:(int)jobType:(NSString*)jobName:(UIBarButtonItem *)barButton{
    
    NSString *path;
    if ([jobName isEqualToString:@"Printout.png"]) {
        path= [self documentsPathForFileName:@"Printout.png"];
    }
    
    NSData *mydata=[NSData dataWithContentsOfFile:path];
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    pic.delegate = self;
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = [path lastPathComponent];
    printInfo.duplex = UIPrintInfoDuplexLongEdge;
    pic.printInfo = printInfo;
    pic.showsPageRange = YES;
    pic.printingItem = mydata;
    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
        if (!completed && error) {
            NSLog(@"Printing could not complete because of error: %@", error);
        }
    };
    
    [pic presentFromBarButtonItem:barButton animated:YES completionHandler:completionHandler];
    
    }
    
    0 讨论(0)
提交回复
热议问题