user2724028
user2724028

Reputation: 604

display specific pdf page in the UIWebview ios

I am currently working on a project and I have ios need to display a pdf file. However i want choose the page to display. For example see page 10 of 37 in a UIWebView. I have not found a way to cleanly separate the pages of a pfd.

thank you for your help.

Upvotes: 1

Views: 3688

Answers (2)

Paresh Navadiya
Paresh Navadiya

Reputation: 38259

Use UIWebView's delegate method to do this:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
   //Check if file still loading
   if(!webView.isLoading)
   { 
     //now traverse to specific page
     [self performSelector:@selector(traverseInWebViewWithPage) withObject:nil afterDelay:0.1];
   }
}

Now add below method to traverse to your page. Note need valid PDF file path and provide your valid specific page no you want traverse in PDF file.

-(void)traverseInWebViewWithPage
{
   //Get total pages in PDF File ----------- PDF File name here ---------------
   NSString *strPDFFilePath = [[NSBundle mainBundle] pathForResource:@"yourPDFFileNameHere" ofType:@"pdf"];
   NSInteger totalPDFPages = [self getTotalPDFPages:strPDFFilePath];

   //Get total PDF pages height in webView
   CGFloat totalPDFHeight = yourWebViewPDF.scrollView.contentSize.height;
   NSLog ( @"total pdf height: %f", totalPDFHeight);

   //Calculate page height of single PDF page in webView
   NSInteger horizontalPaddingBetweenPages = 10*(totalPDFPages+1);
   CGFloat pageHeight = (totalPDFHeight-horizontalPaddingBetweenPages)/(CGFloat)totalPDFPages;
   NSLog ( @"pdf page height: %f", pageHeight);

   //scroll to specific page --------------- here your page number -----------
   NSInteger specificPageNo = 2;
   if(specificPageNo <= totalPDFPages)
   {
      //calculate offset point in webView
      CGPoint offsetPoint = CGPointMake(0, (10*(specificPageNo-1))+(pageHeight*(specificPageNo-1)));
      //set offset in webView
      [yourWebViewPDF.scrollView setContentOffset:offsetPoint];
   }
}

For calculation of total PDF pages

-(NSInteger)getTotalPDFPages:(NSString *)strPDFFilePath
{
   NSURL *pdfUrl = [NSURL fileURLWithPath:strPDFFilePath];
   CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((CFURLRef)pdfUrl);
   size_t pageCount = CGPDFDocumentGetNumberOfPages(document);
   return pageCount;
}

Enjoy coding .....

Upvotes: 9

Toseef Khilji
Toseef Khilji

Reputation: 17419

You can use setContentOffset property of webview to show that page,

[[webView scrollView] setContentOffset:CGPointMake(0,10*pageheight) animated:YES];

where pageheight=your page height, 10 is your page no,

Upvotes: 2

Related Questions