2016-10-05 108 views
0

我不能(有900页)一个大的PDF文件加载到我的 的WebView在我的Android应用程序,我尝试此代码,并在任何 其他PDF运作良好,但是当我尝试打开一个大的显示屏时:无预览 可用。如何在Android中大的PDF文件加载到我的WebView

 wvReport.getSettings().setJavaScriptEnabled(true); 
    wvReport.getSettings().setAllowFileAccess(true); 
    wvReport.getSettings().setAllowContentAccess(true); 

    wvReport.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return true; 
     } 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      // TODO Auto-generated method stub 
      super.onPageFinished(view, url); 
      Toast.makeText(ReportsViewActivity.this, "Oh no! " , Toast.LENGTH_SHORT).show(); 
     } 

    }); 

    wvReport.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public void onProgressChanged(WebView view, int progress) { 
      if (progress == 100) { 
       progressBar.setVisibility(View.INVISIBLE); 
       progressBar.setProgress(0); 
      } else { 
       progressBar.setVisibility(View.VISIBLE); 
       progressBar.setProgress(progress); 
      } 
     } 

     @Override 
     public void onReceivedTitle(WebView view, String title) { 

     } 
    }); 
    wvReport.loadUrl("http://docs.google.com/viewer?url="+url); 

回答

0

你没有。 Webviews显示html。事实上,这一切都是由黑客 - 谷歌将简单的PDF转换为HTML。看起来他们似乎不支持任何大事。即使他们这样做了,我也希望加载一个900页的pdf转换为html会非常大,我非常怀疑你可以加载它而不用去OOM。使用一个合适的pdf库,制作一个真正的pdf渲染视图,并确保不会一次渲染更多的pdf,而不是你需要的(否则你会去OOM)。换句话说,不要依赖你从来不应该依赖的hacky解决方案。

0

您应该尝试在设备上本地运行PDF.js等替代方法,而不是像Google文档预览这样的服务。

把它放在你的资产文件夹和调整的例子:

wv.loadUrl("file:///android_asset/web/viewer.html"); 

此外,作为@加布 - sechan提到,你可以有内存局势。另一种尝试是像AndroidPdfViewer这样的本地查看器。

0

我试试这个代码:Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(browserIntent);

,它的工作,所以如果PDF太大,将被下载并通过PDF查看器中打开

谢谢

相关问题