如何控制页面显示为UIWebView for iOS加载的PDF(转到页面)

我正在开发一个应用程序,显示embedded在WebView中的PDF这是我的代码:

- (void)viewDidLoad { [super viewDidLoad]; NSURL *urlremoto = [NSURL URLWithString:@"https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf"]; request = [NSURLRequest requestWithURL:urlremoto]; [self.webView loadRequest:request]; [self.webView setScalesPageToFit:YES]; } -(void)webViewDidStartLoad:(UIWebView *)webView{ [self.activityIndicator startAnimating]; } -(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ //TODO: describir el error [self.activityIndicator stopAnimating]; } -(void)webViewDidFinishLoad:(UIWebView *)webView{ [self.activityIndicator stopAnimating]; } 

现在我想触摸一个button,并将我加载的PDF更改为特定的页面,我正在寻找的东西来实现这一点,但仍然没有任何工作

在此先感谢您的支持

在这一刻,我认为你可以使用两种方法:

  1. 使用scrollView来导航,通过PDF:

    [[webView scrollView] setContentOffset:CGPointMake(0,y)animated:YES];

    //例如,在具有1000 px页面高度的PDF文档中跳转到第5页:

     int selectedPag = 5; // ie Go to page 5 float pageHeight = 1000.0; // ie Height of PDF page = 1000 px; float y = pageHeight * selectedPag; [[webView scrollView] setContentOffset:CGPointMake(0,y) animated:YES]; 
  2. 拆分PDF个别页面。

据我所知,Safari套件不支持命名目的地( RFC 3778 )。 换句话说,如果你这样做:

 <a href="http://www.domain.com/file.pdf#page=3">Link text</a> 

在Safari中,它不会工作。

就我所知,跳到PDF页面的唯一机会是使用像Reader这样的框架或其他等效的框架。

就像RFG所说的那样,使用webview的滚动视图是完美的,关键的一步是找出pdf页面的高度,下面的代码将得到PDF文件的全部高度和pdf文件的页面数量,然后我们得到它!

第一条路:

 //get the total height CGFloat pageHeight = self.webView.scrollView.contentSize.height; //get page nums -(NSInteger)getTotalPDFPages:(NSString *)strPDFFilePath { NSURL *pdfUrl = [NSURL fileURLWithPath:strPDFFilePath]; CGPDFDocumentRef document = CGPDFDocumentCreateWithURL((CFURLRef)pdfUrl); size_t pageCount = CGPDFDocumentGetNumberOfPages(document); return pageCount; } 

第二种方式:

 //get the content info - (void)webViewDidFinishLoad:(UIWebView *)webView { [self.okBtn setEnabled:YES]; [self.signPdfBtn setEnabled:YES]; NSArray* a = [self.webView.scrollView subviews]; for (UIView* view in a) { if ([view isKindOfClass:NSClassFromString(@"UIWebPDFView")]) { NSArray* b = view.subviews; self.content_hetght = view.bounds.size.height; self.content_num = b.count; } } } //then you can jump any page,like the last page [self.webView.scrollView setContentOffset:CGPointMake(0, (self.content_num-1)*(self.content_hetght*1.0 /self.content_num)) animated:YES]; 

Swift 3版本:

  let selectedPag: CGFloat = 5; // ie Go to page 5 let pageHeight: CGFloat = 1000.0; // ie Height of PDF page = 1000 px; let y: CGFloat = pageHeight * selectedPag; let pageOffset = CGPoint(x: 0, y: y) WebViewMore.scrollView.setContentOffset(pageOffset, animated: true)