display specific pdf page in the UIWebview ios

前端 未结 2 1963
攒了一身酷
攒了一身酷 2021-01-15 18:17

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 hav

相关标签:
2条回答
  • 2021-01-15 18:34

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

    0 讨论(0)
  • 2021-01-15 18:43

    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,

    0 讨论(0)
提交回复
热议问题