Как загрузить онлайн-файлы pdf в Xamarin Webview?

Я пытаюсь загрузить и отобразить онлайн-файл pdf (файл из ссылки sharepoint) в формах Xamarin Webview. Чтобы загрузить PDF-файл, я реализовал программу просмотра PDF-файлов с помощью настраиваемого средства визуализации. Но там файлы не загружаются. Не могли бы вы мне помочь?

Следующий код используется для загрузки файла.

   var customWebView = Element as AuthWebView;
                Control.Settings.AllowUniversalAccessFromFileURLs = true;
                Control.Settings.PluginsEnabled = true;
                Control.Settings.JavaScriptEnabled = true;
                //  Control.LoadUrl("https://drive.google.com/viewerng/viewer?embedded=true&url=" + customWebView.Uri); tired this also but no luck
                Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file:///android_asset/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));

person Parthiban S    schedule 21.11.2019    source источник
comment
Ссылки Sharepoint, которые я видел, на самом деле являются не самим файлом, а веб-оболочкой Sharepoint. Попробуйте загрузить что-нибудь вроде orimi.com/pdf-test.pdf или w3.org/WAI/ER/tests/xhtml/testfiles/ resources / pdf / dummy.pdf, чтобы подтвердить, что это проблема.   -  person SushiHangover    schedule 21.11.2019
comment
Привет, @SushiHangover, я проверил предоставленную вами ссылку в формате pdf, которая также не загружается. Пожалуйста, исправьте меня в приведенном выше коде, если я сделал что-то не так.   -  person Parthiban S    schedule 21.11.2019
comment
@SushiHangover Я столкнулся с той же проблемой. Есть ли способ обойти веб-оболочку Sharepoint? Я могу загружать ссылки .pdf без каких-либо проблем, но общие ссылки Sharepoint на pdf представляют файл в представлении веб-оболочки, и поэтому он не может быть загружен как обычно   -  person 12dollar    schedule 10.03.2020
comment
@ 12dollar Лично я не знаю способа обойти эту оболочку (она обеспечивает безопасность, совместное использование и другие функции). Вы можете просто загрузить оболочку в WebView или встроенный браузер приложения (например, Chrome CustomTabs) через Essentials и т. Д.   -  person SushiHangover    schedule 10.03.2020
comment
@SushiHangover, спасибо, попробую что-нибудь, и я сообщу здесь, если найду подходящее решение.   -  person 12dollar    schedule 16.03.2020


Ответы (1)


Если url содержит префикс https, вам следует добавить следующий код в проект Android. Поскольку после Android 9 (уровень API 28) поддержка открытого текста по умолчанию отключена.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>

И поскольку вы хотите загрузить удаленный PDF-файл, вам просто нужно загрузить URL-адрес напрямую .file:///android_asset/pdfjs/web/viewer.html - для локального PDF-файла.

Control.LoadUrl(string.Format("https://drive.google.com/viewerng/viewer?url={0}", "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"));

Я использовал URL-адрес, предоставленный @SushiHangover, и он отлично работает на моей стороне.

person Lucas Zhang    schedule 21.11.2019