【问题标题】:PDF opening event in IOS app for rendered URL on UIWebViewIOS 应用程序中的 PDF 打开事件,用于在 UIWebView 上呈现 URL
【发布时间】:2013-03-06 11:02:37
【问题描述】:

我正在使用UIWebView 控件并仅以横向模式在其上打开网页 URL。在特定事件的此 URL 中,正在打开 PDF。这次 PDF 没有正确打开(它总是只显示 PDF 文件的第一页),并且在“输出”窗口中我收到“flatedecode 解码错误”。

有什么方法可以让我的应用程序捕捉到 PDF 打开事件,并且我可以在 Safari 或其他浏览器中打开 PDf,而不是 UIWebView

或者Phonegap有什么方法可以做到这一点?

【问题讨论】:

    标签: iphone ios ipad cordova cordova-2.0.0


    【解决方案1】:

    我猜你只需要一种方法来找出打开 PDF 的特定链接是否被点击?

    确保你的 viewcontroller 成为 webview 的代理。然后实现这个方法

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    
    当点击链接时加载新页面时,

    navigationType 将为 UIWebViewNavigationTypeLinkClicked

    request 将告诉您正在打开的 URL,如果该 URL 是您的 PDF 之一,您可以收听。如果是,那么您可以按照您想要的方法处理它 - 下载它并在另一个 Web 视图中打开或在 safari 中打开。

    更多详情here.

    【讨论】:

      【解决方案2】:

      您可以使用此代码将 PDF 保存在您的文档目录中

      NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
      NSString *cachePath = [paths objectAtIndex:0];
      BOOL isDir = NO;
      NSError *error;
      //You must check if this directory exist every time
      if (! [[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir   == NO)
      {
          [[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
      }
      NSString *filePath = [cachePath stringByAppendingPathComponent:@"QRScanner.pdf"];
      //webView.request.URL contains current URL of UIWebView, don't forget to set outlet for it
      NSData *pdfFile = [NSData dataWithContentsOfURL:webView.request.URL];
      if(pdfFile)
      {
          [AppDelegate obj_appDelegate].Alertview.hidden = YES;
          [[AppDelegate obj_appDelegate].activity stopAnimating];
      }
      [pdfFile writeToFile:filePath atomically:YES];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-27
        • 2013-09-25
        • 1970-01-01
        • 2012-08-16
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多