Не удается запустить 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:
Просмотрите файл с помощью 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');
Или используйте плагин 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");