如何控制页面显示为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更改为特定的页面,我正在寻找的东西来实现这一点,但仍然没有任何工作
在此先感谢您的支持
在这一刻,我认为你可以使用两种方法:
-
使用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];
-
拆分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)