Doc

Install

In order to test the printing system from the iOS Simulator is required to install the ‘Printer Simulator’. This app is included inside Additional Tools for Xcode 9 (inside folder Hardware) in Developer Downloads

Usage

To print for iPhone/iPad is necesary to obtain the shared instance of UIPrintInteractionController y configure it. To do that, you must create an instance of UIPrintInfo an set all the necessary values as:

  • Work name to identify it in the print queue
  • Orientation
  • Type of impression: text, image, other.
  • The content to print, in one of the follogin formats:
    • NSData, NSURL, UIImage, o ALAsset
    • Array of NSData, NSURL, UIImage, or ALAsset
    • UIPrintFormatter (this allows to define the layout)
    • UIPrintPageRenderer

Last, you must to present the controller in the screen using some method like presentFromBarButtonItem.

Sample Code

- (IBAction)btnPrintTapped:(id)sender {
    [self doPrint];
}

- (void)doPrint {
    UIPrintInteractionController* controller = [self configurePrinting:@"printerX"];
    NSURL* url = [self urlForPDF];
    controller.printingItem = url;
    [self printWithController:controller];
}

- (UIPrintInteractionController*)configurePrinting:(NSString*)printerId {
    UIPrintInteractionController* controller = [UIPrintInteractionController sharedPrintController];
	
    UIPrintInfo* printInfo = [UIPrintInfo printInfo];
    // Configure printinfo
    printInfo.jobName = @"Sextante app print";
    printInfo.orientation = UIPrintInfoOrientationPortrait;
    printInfo.outputType = UIPrintInfoOutputGeneral; // For photos and text
//    printInfo.printerID = // Se puede indicar la anterior impresora

    controller.printInfo = printInfo;
    controller.delegate = self;
	
    return controller;
}

- (void)printWithController:(UIPrintInteractionController*)controller {
    [controller presentFromBarButtonItem:self.btnPrint
                                animated:YES
                       completionHandler:^(UIPrintInteractionController * _Nonnull printInteractionController, BOOL completed, NSError * _Nullable error) {
						   
                       }
     ];
}


# pragma mark - Printer delegate
//- ( UIViewController * _Nullable )printInteractionControllerParentViewController:(UIPrintInteractionController *)printInteractionController
//
//- (UIPrintPaper *)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray<UIPrintPaper *> *)paperList;
//
//- (void)printInteractionControllerWillPresentPrinterOptions:(UIPrintInteractionController *)printInteractionController;
//- (void)printInteractionControllerDidPresentPrinterOptions:(UIPrintInteractionController *)printInteractionController;
//- (void)printInteractionControllerWillDismissPrinterOptions:(UIPrintInteractionController *)printInteractionController;
//- (void)printInteractionControllerDidDismissPrinterOptions:(UIPrintInteractionController *)printInteractionController;
//
//- (void)printInteractionControllerWillStartJob:(UIPrintInteractionController *)printInteractionController;
- (void)printInteractionControllerDidFinishJob:(UIPrintInteractionController *)printInteractionController {
	
    int a = 0 ;
}

//- (CGFloat)printInteractionController:(UIPrintInteractionController *)printInteractionController cutLengthForPaper:(UIPrintPaper *)paper NS_AVAILABLE_IOS(7_0);
//- (UIPrinterCutterBehavior) printInteractionController:(UIPrintInteractionController *)printInteractionController chooseCutterBehavior:(NSArray *)availableBehaviors NS_AVAILABLE_IOS(9_0);