如何将Android中的大型pdf文件加载到我的webview中

如何将Android中的大型pdf文件加载到我的webview中,android,pdf,webview,Android,Pdf,Webview,我无法将一个大的pdf文件(有900页)加载到我的 在我的android应用程序webview中,我尝试了这段代码,并且在任何情况下都能很好地工作 其他pdf,但当我尝试打开一个大的pdf时,它会显示:没有预览 可用 wvReport.getSettings().setJavaScriptEnabled(true); wvReport.getSettings().setAllowFileAccess(true); wvReport.getSettings().se

我无法将一个大的pdf文件(有900页)加载到我的 在我的android应用程序webview中,我尝试了这段代码,并且在任何情况下都能很好地工作 其他pdf,但当我尝试打开一个大的pdf时,它会显示:没有预览 可用

        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);

你没有。网络视图显示html。事实上,这是一个黑客-谷歌将把简单的PDF转换成html。他们似乎不支持这么大的东西。即使他们真的这么做了,我也希望加载一个900页的pdf转换成html会如此之大,以至于我非常怀疑您是否能够在不打开OOM的情况下加载它。使用合适的pdf库,创建一个真正的pdf渲染视图,并确保一次渲染的pdf不会超过所需的数量(否则无论如何都会出错)。换句话说,不要依赖那些你本来就不应该依赖的黑客解决方案。

你应该尝试在你的设备上本地运行,而不是像Google Docs preview这样的服务

将其放在您的资产文件夹中,并调整示例:

wv.loadUrl("file:///android_asset/web/viewer.html");
此外,正如@gabe sechan提到的,您可能会出现内存不足的情况。另一种方法是像本机查看器一样进行尝试。

尝试以下代码:

Intent-browserint=newintent(Intent.ACTION\u视图,Uri.parse(url));
startActivity(浏览器内容);

它正在工作,因此如果pdf太大,将通过pdf viewer下载并打开。

AndroidPDViewer在打开大pdf文件时是否会阻止OOM?请回复。我在这种情况下没有经验。在这种情况下,它应该比PDF.js做得更好,但我不能说OOM是否永远不会发生。