如何在自定义webview xamarin表单中显示pdf

时间:2018-05-02 06:28:18

标签: xamarin xamarin.forms xamarin.android

我想使用pdfjs从url在webview中显示pdf,但我得到空视图。这是我的代码

CustomWebView.cs

 public class CustomWebView : WebView
        {
            public static readonly BindableProperty UriProperty = BindableProperty.Create(propertyName: "Uri",
                    returnType: typeof(string),
                    declaringType: typeof(CustomWebView),
                    defaultValue: default(string));

            public string Uri
            {
                get { return (string)GetValue(UriProperty); }
                set { SetValue(UriProperty, value); }
            }
        }

MainPage.xaml中

 <ContentPage.Content>
        <local:CustomWebView Uri="http://veezo2007pkk.somee.com/api/DiagnosticDetail/RetrieveFile/1" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
    </ContentPage.Content>

App.Android

CustomWebViewRenderer.cs

 public class CustomWebViewRenderer : WebViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                var customWebView = Element as CustomWebView;
                Control.Settings.AllowUniversalAccessFromFileURLs = true;
                Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file:///android_asset/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
            }
        }
    }

看起来很好看,但我不知道为什么它没有在webview中显示....

1 个答案:

答案 0 :(得分:0)

我将在这里假设两件事。其一,您对WebView中显示的PDF文件并不珍贵。其次,您可以使用第三方库。

我建议使用SyncFusion PdfViewer。它非常易于使用,可以完成您可能想要处理的所有内容 - 可能并非一切都很重要。如果您担心自己需要为这些控制付出很多代价,请不要担心! SyncFusion has a free community license,您可以使用(如果您的收入不超过100万美元,而且您的团队规模不超过5个开发者)。您可能需要查看this thread,谈论从URL显示PDF。