Просмотр PDF с Webview Xamarin Android - PullRequest
0 голосов
/ 19 марта 2020

Я хотел бы использовать веб-просмотр для просмотра PDF-файла, но что-то должно отсутствовать.

Пользовательский код веб-просмотра:

class CustomWebView : WebView
{
    public static readonly BindableProperty UriProperty = BindableProperty.Create(nameof(Uri), typeof(string), typeof(CustomWebView), default(string));

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

Код CustomWebViewRenderer:

class CustomWebViewRenderer : WebViewRenderer
{
    public CustomWebViewRenderer(Context context) : base(context)
    {

    }

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

XAML код:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="120"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Button HeightRequest="100" 
            WidthRequest="200"
            HorizontalOptions="Center" 
            VerticalOptions="Center" 
            Clicked="Button_Clicked" Grid.Row="0"/>
    <!--<local:CustomWebView Grid.Row="1" Uri="test.pdf" x:Name="PdfViewer"  HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>-->
    <local:CustomWebView Grid.Row="1" x:Name="PdfViewer"  HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>

mainpage.xaml.cs:

private void Button_Clicked(object sender, EventArgs e)
{
    PdfViewer.Uri = "test.pdf";
}

Если я установил URI из XAML, PDF-файл отображается, но если я установил его из кода за это не ' не работает.

Как я могу установить PDF из кода позади? Использование отладки при установке pdf из кода не происходит CustomWebViewRenderer.OnElementChanged и, следовательно, не обновляется, как это сделать?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...