2013-10-07 82 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) 
相關問題