当用户点击链接时,我有一个要求在inappbrowser中显示pdf。 在ios中工作正常但在android上无法正常工作。 我正在使用IBM Worklight进行我的项目。 下面是我使用的代码:
window.open("pdfURL","_blank","location=yes");
在iOS中,inappbrowser会启动并显示PDF文件,但在Android中,inappbrowser会启动但不会显示任何内容。当用户点击链接时,我有一个要求在inappbrowser中显示pdf。 在ios中工作正常但在android上无法正常工作。 我正在使用IBM Worklight进行我的项目。 下面是我使用的代码:
window.open("pdfURL","_blank","location=yes");
在iOS中,inappbrowser会启动并显示PDF文件,但在Android中,inappbrowser会启动但不会显示任何内容。与iOS不同,其内置了PDF阅读器 - Android的Webview没有内置的PDF阅读器。
这就是为什么它在Android上无法使用的原因。
在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中搜索更多)。对于此操作,您需要学习如何在Worklight中创建Cordova插件。
您可以在此处阅读更多选项:Phonegap InAppBrowser 显示pdf 2.7.0
window.open(encodeURI('https://docs.google.com/gview?embedded=true&url=http://kmmc.in/wp-content/uploads/2014/01/lesson2.pdf'), '_blank', 'location=yes,EnableViewPortScale=yes');
,并且它可以正常工作。请确保将PDF文件存储在公共文件服务器中(而不是Worklight服务器)。 - Idan Adar'https://docs.google.com/gview?embedded=true&url=http://www.your-server.com/files/your_file.pdf
这个链接可以使用。如果我们需要添加头文件,可以使用file-transfer插件将pdf文件保存到本地,然后将路径与url路径拼接起来。但是出现了错误,找不到该文件。有没有其他方法可以在inappbrowser中显示本地pdf文件?@IdanAdar - Mohan Gopi尝试使用
window.open('pdfURL',"_system","location=yes,enableViewportScale=yes,hidden=no");
在使用_system
时,将下载文件并在系统的应用程序中打开,例如Chrome或其他PDF查看器。
使用 uriEncodeComponent(link) 和 https://docs.google.com/viewer?url= link
支持 Doc、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;
}
}
});
尝试这段代码,对我来说运行良好。
var inAppBrowserRef;
var target = "_system";
var options = "location=yes,hidden=no,enableViewportScale=yes,toolbar=no,hardwareback=yes";
inAppBrowserRef = cordova.InAppBrowser.open(url, target, options);
InAppBrowser: Error loading url file:///android_asset/www/assets/pdf/my.pdf:android.os.FileUriExposedException: file:///android_asset/www/assets/pdf/my.pdf exposed beyond app through Intent.getData()
,主要是因为API Level 24+中加强的安全措施(请参见https://dev59.com/zVoT5IYBdhLWcg3wvRpk#38858040)。 - timbru31code var url ="www.abc.com/abc/xyz.pdf"; var inAppBrowserRef; var target = "_system"; var options = "location=yes,hidden=no,enableViewportScale=yes,toolbar=no,hardwareback=yes"; inAppBrowserRef = cordova.InAppBrowser.open(url, target, options);
- Pankaj Singh Sugara这对我而言正常运作。
window.open(link, "_blank","location=yes");