Отображение PDF-файлов из интернета в Xamarin.Forms UWP

Вполне возможно, что люди, которые подписываются на вашу службу, вводят электронные письма с ошибками ввода, которые вы не исправляете. Например: chris@gmial.com -or- james@hotnail.com.

И такие домены сконфигурированы для использования в качестве spamtraps , которые автоматически помещают IP-адрес вашего почтового сервера и / или домен и повредить его репутации.

Чтобы избежать этого, выполните двойную проверку для адреса электронной почты, который вводится при подписке на продукт. Также отправьте электронное письмо с подтверждением, чтобы убедиться, что этот адрес электронной почты проверен на 100% человеком, который вводит письмо с подтверждением, прежде чем отправлять им ключ продукта или принять их подписку. Письмо с подтверждением должно требовать, чтобы получатель щелкнул ссылку или ответ, чтобы действительно подтвердить, что владельцем почтового ящика является человек, который зарегистрировался.

0
задан Nico Zhu - MSFT 30 January 2019 в 03:27
поделиться

1 ответ

По вашему требованию вы можете сослаться на этот пример кода , который настраивает WebView и загружает файл pdf с хост-веб-приложением pdf.js .

[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace DisplayPDF.WinPhone81
{
    public class CustomWebViewRenderer : WebViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                var customWebView = Element as CustomWebView;
                Control.Source = new Uri(string.Format("ms-appx-web:///Assets/pdfjs/web/viewer.html?file={0}", string.Format ("ms-appx-web:///Assets/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));
            }
        }
    }
}

Обновление

Таким образом, это работает. Но PDF должен быть частью проекта. Означает ли это, что нет способа отобразить случайные файлы, например, скачано из Интернета?

Я вспоминаю случай, на который я ответил за последние несколько месяцев. Для отображения случайных файлов вы можете преобразовать pdf-файл в Base64String, а затем открыть его, вызвав функцию openPdfAsBase64 JS в viewer.js. Подробнее см. Этот случай , ответ .

Для лучшего понимания я создал пример кода , на который вы могли бы сослаться. перед его использованием необходимо поместить файл hello.pdf в папку LocalState . Потому что путь загрузки файла по умолчанию - папка LocalState, но он пуст при первом запуске.

PDFViewRenderer.cs

public class PDFViewRenderer :WebViewRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
    {
        base.OnElementChanged(e);
        if (e.NewElement != null)
        {
            Control.Source = new Uri("ms-appx-web:///Assets/pdfjs/web/viewer.html");
            Control.LoadCompleted += Control_LoadCompleted;
        }
    }
    private async void Control_LoadCompleted(object sender, Windows.UI.Xaml.Navigation.NavigationEventArgs e)
    {
        PDFView pdfView = Element as PDFView;
        if (string.IsNullOrEmpty(pdfView?.FileName)) return;
        try
        {
            var Base64Data = await OpenAndConvert(pdfView?.FileName);
            var obj = await Control.InvokeScriptAsync("openPdfAsBase64", new[] { Base64Data });
        }
        catch (Exception ex)
        {
            throw ex;
        }

    }
    private async Task<string> OpenAndConvert(string FileName)
    {
        var folder = ApplicationData.Current.LocalFolder;
        var file = await folder.GetFileAsync(FileName);
        var filebuffer = await file.OpenAsync(FileAccessMode.Read);
        var reader = new DataReader(filebuffer.GetInputStreamAt(0));
        var bytes = new byte[filebuffer.Size];
        await reader.LoadAsync((uint)filebuffer.Size);
        reader.ReadBytes(bytes);
        return Convert.ToBase64String(bytes);
    }
}

PDFView.cs

public class PDFView : WebView
{
    public PDFView()
    {

    }
    public static readonly BindableProperty FileNameProperty = BindableProperty.Create(
    propertyName: "FileName",
    returnType: typeof(string),
    declaringType: typeof(PDFView),
    defaultValue: default(string));

    public string FileName
    {
        get { return (string)GetValue(FileNameProperty); }
        set { SetValue(FileNameProperty, value); }
    }
}

Использование

[ 113]

Обратите внимание, что вам нужно использовать этот метод viewer.js , который был добавлен openPdfAsBase64.

0
ответ дан Nico Zhu - MSFT 30 January 2019 в 03:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: