2013-10-07 114 views
3

我正在开发它显示嵌入的WebView这一个PDF的应用程序是我的代码:如何控制页面显示在UIWebView中加载的iOS 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]; 
} 

现在我想轻触按钮改变我的加载PDF的某些页面,我正在寻找的东西来实现这一点,但仍然没有什么工作

先感谢您的支持

+0

可能重复[iPhone的UIWebView PDF页面跳转]的(HTTP://计算器.com/questions/1974304/iphone-uiwebview-pdf-page-jump) – bummi

回答

2

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

  1. 使用滚动视图为“导航,通过PDF:

    [webView的滚动视图] setContentOffset:CGPointMake(0,y)的动画:是];

    //例如,跃居第5页PDF文档中与1000像素的页面高度:

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

+0

我试着用你的UIWebViewDelegate方法: - (void)webViewDidFinishLoad:(UIWebView *)webView;这但没有像这样工作:[[self.webView scrollView] setContentOffset:CGPointMake(0,-800)animated:YES]; –

+0

我修改了我之前回复的代码。现在试试。 – RFG

+0

它工作!感谢分享您的专业知识= d最后一个问题,有没有办法让pageHeight dinamically可能是巨大的建设方法,我会搜索该反正但如果你知道那简直太好了 –

1

据我所知,Safari浏览器套件并不支持命名目的地(RFC 3778)。换句话说,如果您尝试这样做:

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

在Safari中,它不起作用。

你跳转到一个PDF页面,据我所看到的,是使用像Reader框架,或其他等效的唯一机会。

+0

让我检查一下,所以目前还没有别的选择... –

1

就像RFG表示,采用的WebView滚动型是完美的,关键的一步是要找出PDF页面的高度,后续代码会得到PDF文件和PDF文件的网页NUM的整个高度。然后我们拿到了!

第一种方式:

//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]; 
0

斯威夫特3版本:

let selectedPag: CGFloat = 5; // i.e. Go to page 5 

    let pageHeight: CGFloat = 1000.0; // i.e. Height of PDF page = 1000 px; 

    let y: CGFloat = pageHeight * selectedPag; 

    let pageOffset = CGPoint(x: 0, y: y) 
    WebViewMore.scrollView.setContentOffset(pageOffset, animated: true) 
相关问题