Android Webview有时无法呈现pdf,而是显示空白/白页

问题描述 投票:1回答:1
  • 使用google docs在webview中打开pdf
  • 反复打开相同的pdf或不同的pdf。
  • 有时它会在android中显示空白/白页,直到我们再次刷新网页1或2次。

我在pdf上制作了样本。该项目的链接如下所示:

https://github.com/gopalawasthi123/PdfWebView

希望这会对你有所帮助。

public void SetWebView(WebView webview,string externalUrl){
            webview.Tag = "webview";
            webview.Settings.JavaScriptEnabled = true;
            webview.Settings.SupportZoom ();
            webview.Settings.SetAppCacheEnabled(true);
            webview.Settings.DomStorageEnabled = true;
            webview.ZoomOut ();
            webview.ZoomIn ();
            webview.Settings.BuiltInZoomControls = true;
            webview.Settings.LoadWithOverviewMode = true;
            webview.Settings.UseWideViewPort = true;
            //webview.Settings.SetSupportZoom (true);
            webview.Settings.SetPluginState (WebSettings.PluginState.On);
            webview.Settings.GetPluginState ();
            if (externalUrl.StartsWith("http://") || externalUrl.StartsWith("https://"))
                webview.LoadUrl (externalUrl);
            webview.SetWebViewClient (new MonkeyWebViewClient (imgViewBack, imgViewForward, imgRefresh));
            webview.SetWebChromeClient (new WebChromeClient ());
        }
java c# android xamarin.android android-webview
1个回答
0
投票

在测试第二个PDF URL文件后,WebView似乎无法加载大型PDF文件。

原因:

WebView显示HTML。事实上,这完全是由hack-谷歌将简单的PDF转换为HTML。看起来他们似乎不支持任何大事。即使他们这样做了,我希望加载一个大页面的PDF转换为HTML会是如此之大,我非常怀疑你能够在没有OOM的情况下加载它。使用适当的PDF库,制作真实的PDF渲染视图,并确保不要一次渲染更多的PDF(否则你会去OOM)。换句话说,不要依赖你从未应该依赖的hacky解决方案。

解:

您应该尝试在设备中本地运行的PDF.js等替代品,而不是Google Docs预览等服务。(或者首先将PDF下载到本地文件路径)

将它放在您的资源文件夹中并调整示例:

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

此外,您可以拥有Out Of Memory情况。尝试的另一种选择是像AndroidPdfViewer这样的原生观众。

© www.soinside.com 2019 - 2024. All rights reserved.