我在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 ());
}
在测试第二个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这样的原生观众。