Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Print PDF file on iphone or ipad

I attached a file to the mail I am using this code.

[mail addAttachmentData:[myView PDFData] mimeType:@"application/pdf" fileName:@"name.pdf"];

How can I do the same thing for printing a file, I need to print this [myView PDFData].

I found only this for printing:

NSString *PDFFileWithName = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"pdf"];

NSData *dataFromPath = [NSData dataWithContentsOfFile:PDFFileWithName];

Thanks

like image 913
Marco Avatar asked Mar 25 '11 20:03

Marco


People also ask

Can you print pdfs on iPhone?

You can easily make or print a PDF file in iOS from apps like Safari, Google Chrome, Gmail and Outlook.

Can you print from an iPhone or iPad?

The easiest way to print from your iPhone or iPad is with AirPrint. When you add a printer to your iPhone with AirPrint, you can directly print with a wireless connection. You can also print from your iPhone without AirPrint by downloading your printer's app or plugging in a USB cord to your printer.

How do I print a PDF attachment from my iPhone?

Print an attachment or pictureTap an attachment to view it, tap Share , then choose Print.


3 Answers

You should read through the Drawing and Printing Guide for iOS. The printingItem property of UIPrintInteractionController can be set to the NSData of a PDF.

Update for added code

The value of dataFromPath should be equal to [myView PDFData] although I would recommend changing the variable name once you get it working.

NSData *dataFromPath = [myView PDFData];
like image 50
Joe Avatar answered Nov 04 '22 19:11

Joe


Full code to print pdf

UIPrintInteractionController *pc = [UIPrintInteractionController
                                        sharedPrintController];
    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.orientation = UIPrintInfoOrientationPortrait;
    printInfo.jobName =@"Report";

    pc.printInfo = printInfo;
    pc.showsPageRange = YES;
    pc.printingItem = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://test.com/Print_for_Client_Name.pdf"]];
    // You can use here image or any data type to print.


UIPrintInteractionCompletionHandler completionHandler =
^(UIPrintInteractionController *printController, BOOL completed,
  NSError *error) {
    if(!completed && error){
        NSLog(@"Print failed - domain: %@ error code %ld", error.domain,
              (long)error.code);
    }
};


[pc presentFromRect:CGRectMake(0, 0, 300, 300) inView:self.view animated:YES completionHandler:completionHandler];
like image 25
Alok Avatar answered Nov 04 '22 18:11

Alok


write below code and check it

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *pathFolder = [NSString stringWithFormat:@"%@",pdfFileName];
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:pathFolder];
NSURL *targetURL = [NSURL fileURLWithPath:path];

UIPrintInteractionController *pc = [UIPrintInteractionController sharedPrintController];
UIPrintInfo *printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
printInfo.orientation = UIPrintInfoOrientationPortrait;
printInfo.jobName =@“Print”;
printInfo.duplex = UIPrintInfoDuplexLongEdge;

pc.printInfo = printInfo;
pc.showsPageRange = YES;
pc.printingItem = targetURL;

UIPrintInteractionCompletionHandler completionHandler =
    ^(UIPrintInteractionController *printController, BOOL completed,
      NSError *error) {
     if(!completed && error){
         NSLog(@"Print failed - domain: %@ error code %ld", error.domain, (long)error.code);
     }
};
[pc presentFromRect:shareButton.frame inView:self.view animated:YES completionHandler:completionHandler];
like image 3
Chandresh Avatar answered Nov 04 '22 18:11

Chandresh