Не удается запустить PDF-файл в inappbrowser в Android

У меня есть требование, чтобы показать PDF в inappbrowser, когда пользователь нажимает на ссылку. Он работает нормально в IOS, но не работает на Android. Я использую IBM Worklight для своего проекта. Ниже приведен код, который я использовал:

window.open("pdfURL","_blank","location=yes");

В ios inappbrowser запускает и отображает PDF, но в Android запускается inappbrowser, но контент не отображается

6 ответов

Решение

В отличие от iOS, которая имеет встроенный просмотрщик PDF - в веб-представлении Android нет встроенного средства просмотра PDF.
Вот почему это не получится в Android.

У вас есть 2 варианта в Android:

  1. Просмотрите файл с помощью Google Docs , сохранив файл на удаленном сервере и перенаправив пользователя следующим образом: window.open(encodeURI('https://docs.google.com/gview?embedded=true&url=http://www.your-server.com/files/your_file.pdf'), '_blank', 'location=yes,EnableViewPortScale=yes');

  2. Или используйте плагин Cordova. Например, этот (вы можете искать в Google для более). Для этого вам нужно научиться создавать плагины Cordova в Worklight.

Вы можете прочитать больше вариантов здесь: PhoneGap InAppBrowser display pdf 2.7.0

Попробуйте использовать

window.open('pdfURL',"_system","location=yes,enableViewportScale=yes,hidden=no");

где с помощью _system загрузит файл и откроет его в системном приложении, таком как Chrome или в других средствах просмотра PDF.

Используйте uriEncodeComponent(ссылка) и https://docs.google.com/viewer?url= ссылку

Док, Excel, Powerpoint и PDF все поддерживается.

Используйте Cordova в браузере приложений.

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    window.open = cordova.InAppBrowser.open;
        }

            $("body").on("click",function(e){
           var clicked = $(e.target);
         if(clicked.is('a, a *'))
       {
             clicked = clicked.closest("a");
             var link = clicked.attr("href");
            if(link.indexOf("https://") !== -1)
           {
               if(true) //use to be able to determine browser from app
                 {
                    link = "http://docs.google.com/viewer?url=" +  encodeURIComponent(link) + "&embedded=true";
             }

                 window.open(link, "_blank", "location=no,toolbar=no,hardwareback=yes");
                return false;
            }
    }
    });

Использование Google Drive Viewer кажется хорошим быстрым вариантом.

Но, продвигаясь вперед, они могут изменить или обесценить свой API, и вам придется искать новый способ поддержать это. Также безопасность является еще одним соображением, так как ваш файл общедоступен и доступен для скачивания.

У меня была похожая ситуация в недавнем проекте, и мы решили ее с помощью: pdf.js

Это анализатор PDF на основе JS с хорошим набором функций чтения... он не такой гладкий, как у нативного, но сделал работу за нас. Главное его преимущество в том, что мы имели контроль над кодами и могли открывать файлы из файловой системы устройства.

Если вы хотите пойти по более нативному маршруту, как в приложении, то, как сказал @Idan Adar, плагин библиотека + кордова - это путь.

Попробуйте этот код, он работает нормально для меня.

var inAppBrowserRef;
var target = "_system";
var options = "location=yes,hidden=no,enableViewportScale=yes,toolbar=no,hardwareback=yes";
inAppBrowserRef = cordova.InAppBrowser.open(url, target, options); 

Это работает для меня

      window.open(link, "_blank","location=yes");
Другие вопросы по тегам