2016-10-05 106 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查看器中打開

謝謝

相關問題