отображать локальный файл PDF в элементе управления веб-просмотром - отображает пустой файл PDF

Я работаю над Xamarin Forms - UWP. Я хочу отображать локальный файл PDF в элементе управления веб-просмотром. Я перешел по этим 2 ссылкам: - https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/controls/display-pdf/.

Xamarin Forms UWP - отображение PDF

Он открывает файл 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); }
        }
    }


<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:PdfViewer;assembly=PdfViewer"
         x:Class="PdfViewer.MainPage"
         Padding="0,20,0,0">

<ContentPage.Content>
    <local:CustomWebView Uri="samplepdf.pdf" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" />
</ContentPage.Content>

[assembly: ExportRenderer(typeof(PdfViewer.CustomWebView), typeof(CustomWebViewRenderer))]
namespace PdfViewer.UWP
{
    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))));
            }
        }
    }
}

UWP - Assets - pdfjs structure


person XamDev    schedule 22.06.2017    source источник
comment
как мы можем помочь, если вы не предоставили никакого кода, а только ссылки на то, как он должен работать?   -  person Yuri S    schedule 22.06.2017
comment
открытый класс CustomWebView: WebView {общедоступный статический только для чтения BindableProperty UriProperty = BindableProperty.Create (имя_свойства: Uri, returnType: typeof (строка), declaringType: typeof (CustomWebView), defaultValue: default (строка)); общедоступная строка Uri {get {return (string) GetValue (UriProperty); } установить {SetValue (UriProperty, значение); }}}   -  person XamDev    schedule 22.06.2017
comment
Убедитесь, что действие сборки файла установлено на Content. Убедитесь, что ваш Uri указывает на файл правильно.   -  person Yuri S    schedule 22.06.2017
comment
Я уже изменил его на «Контент», но он все еще остается пустым. Кстати, я пытаюсь загрузить код, но он просит меня отформатировать его, который, как мне кажется, уже сформирован.   -  person XamDev    schedule 22.06.2017
comment
Я загрузил свой код и файл изображения, чтобы показать структуру папок pdf.js и папку содержимого.   -  person XamDev    schedule 22.06.2017
comment
Вы пытались загрузить образец проекта по предоставленной вами ссылке developer.xamarin.com/recipes/cross-platform/xamarin-forms/ и запустить?   -  person Yuri S    schedule 22.06.2017
comment
нет, я не скачивал проект. Я создал свой проект.   -  person XamDev    schedule 22.06.2017
comment
Я не спрашивал про ваш проект, я спрашивал про образец проекта со страницы. Если это работает на вашем компьютере, можете ли вы понять, что вы делаете не так в своем проекте?   -  person Yuri S    schedule 22.06.2017
comment
Вы добавляли файлы для просмотра? html, js?   -  person Yuri S    schedule 22.06.2017
comment
Файлы программы просмотра, которые вы имеете в виду под pdfjs- ›web-› viewer.html, viewer.js, viewer.css. Да, я добавил это, поскольку это относится к pdfjs.   -  person XamDev    schedule 22.06.2017
comment
хорошо, я скопировал все необходимые файлы с GitHub и все заработало. К сожалению, воспроизвести проблему не удалось. Возможно, вам не хватает каких-то файлов - их много, и я не проверял, что действительно нужно. Вы скопировали все с github из папки pdfjs, включая подпапки? Единственное, что я могу предложить, чтобы помочь вам, если вы это сделали, - это провести с вами сеанс teamviewer и попытаться выяснить, что не так на вашем ПК. Извини это все что я могу сделать   -  person Yuri S    schedule 23.06.2017
comment
Кстати, что это означает, что контент пуст? Вы видите рамку программы просмотра PDF или окно полностью пустое?   -  person Yuri S    schedule 23.06.2017
comment
Чтобы сначала ответить на второй вопрос: - Я вижу рамку средства просмотра PDF и все его элементы управления, но не показывает никаких страниц.   -  person XamDev    schedule 23.06.2017
comment
Теперь ответ на первый вопрос: - Я скачал папку pdfjs по ссылке, указанной в рецепте, и скопировал весь код с github. Что касается teamviewer, я сначала установлю, так как никогда не использовал его раньше. тогда дам вам знать. Спасибо   -  person XamDev    schedule 23.06.2017
comment
если вы видите фрейм, убедитесь, что I10n.js присутствует и имеет действие Content Build. Без него вы получите фрейм, но не контент. Также убедитесь, что файлы существуют, и установите для Content: pdf.worker.js и pdf.js   -  person Yuri S    schedule 23.06.2017
comment
Можете ли вы предоставить снимок экрана структуры вашего проекта, начиная со всего, что находится в папке Assets   -  person Yuri S    schedule 23.06.2017
comment
И последний глупый вопрос. Находится ли ваш PDF-файл в папке Content?   -  person Yuri S    schedule 23.06.2017
comment
@Yuri, я установил TeamViewer. Когда мы сможем использовать удаленный доступ, чтобы вы могли посмотреть? Спасибо   -  person XamDev    schedule 23.06.2017
comment
Да, мой PDF-файл находится в папке содержимого. Я предоставлю вам скриншот через минуту   -  person XamDev    schedule 23.06.2017
comment
ты знаешь, как создать чат?   -  person Yuri S    schedule 23.06.2017
comment
перейдите в чат-комнату chat.stackoverflow.com/rooms/147484/xamarin-pdf-viewer   -  person Yuri S    schedule 23.06.2017
comment
просто глупый вопрос. я вижу чат, но не знаю, как на это ответить :(   -  person XamDev    schedule 23.06.2017
comment
в багажнике комнаты есть текстовое поле, введите туда :-)   -  person Yuri S    schedule 23.06.2017
comment
он отключен. У вас должно быть 20 репутации на Stack Overflow, чтобы говорить здесь. См. FAQ.   -  person XamDev    schedule 23.06.2017
comment
Я создал новую учетную запись, возможно, она не позволяет мне общаться в чате. Если есть возможность поговорить по электронной почте или как-то еще. :(   -  person XamDev    schedule 23.06.2017
comment
проверяю, как это сделать ...   -  person Yuri S    schedule 23.06.2017
comment
ты можешь печатать сейчас? Если нет, у тебя есть скайп?   -  person Yuri S    schedule 23.06.2017
comment
отправил вам запрос в скайпе   -  person Yuri S    schedule 23.06.2017
comment
Я разместил комментарий, но он был удален, если у вас есть какие-либо обновления по этому поводу (у меня точно такая же проблема), пожалуйста, помогите ^^   -  person RolandMakkelie    schedule 28.05.2021


Ответы (2)


Похоже, что-то случилось с файлами папки активов. Когда был обновлен из репозитория nuget, все заработало.

person Yuri S    schedule 23.06.2017
comment
Спасибо за всю твою помощь. Вы спасли мне еще один день, пытаясь понять, где что-то не так. - person XamDev; 23.06.2017

Я столкнулся с аналогичной проблемой, когда реализую HybridWebView после официального документа.

Проблема в том, что свойство действие сборки для PDF-файл - это не Content. Пожалуйста, установите действие сборки как Content в вашем клиентском проекте uwp.

введите описание изображения здесь

person Nico Zhu - MSFT    schedule 23.06.2017
comment
Я уже изменил действие сборки на Content. по-прежнему отображается пустое содержимое. Неправильно ли указано название файла? Я знаю, что в Android требуется правильное соглашение об именах. - person XamDev; 23.06.2017