无法在android中的inappbrowser中启动pdf文件

当用户点击链接时,我需要在inappbrowser中显示pdf。 它在ios中工作正常,但没有在android上工作。 我正在为我的项目使用IBM worklight。 以下是我使用过的代码:

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

在ios中,inappbrowser启动并显示pdf,但在android中,inappbrowser启动但没有显示内容

与具有内置PDF查看器的iOS不同,Android的webview没有内置的PDF查看器。
这就是它在Android中失败的原因。

您在Android中有2个选择:

  1. 使用Google文档查看文件,方法是将文件存储在远程服务器上并重定向用户,如下所示: 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插件。 例如这个 (你可以在谷歌搜索更多)。 为此,您需要了解如何在Worklight中创建Cordova插件 。

您可以在此处阅读更多选项: Phonegap InAppBrowser display pdf 2.7.0

尝试使用

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

使用_system将下载文件并在系统的应用程序(如Chrome或其他PDF查看器)中打开它。

使用谷歌驱动器查看器似乎是一个很好的快速选项。

但是,他们可能会改变或弃用他们的API,你必须找到一种新的方法来支持它。 此外,安全性是另一个考虑因素,因为您的文件是公开可用且可下载的。

我在最近的一个项目中遇到了类似的情况,我们通过使用: pdf.js来解决它

这是一个基于JS的PDF解析器,具有很好的阅读器function..它不像本机那样流畅,但为我们完成了工作。 它的主要优点是我们可以控制代码并能够从设备文件系统中打开文件。

如果你想寻找更像本地的应用程序路线,那么@Idan Adar提到了一个本地库+ cordova插件是要走的路。

使用uriEncodeComponent(链接)和https://docs.google.com/viewer?url= link

所有支持Doc,Excel,Powerpoint和pdf。

在app浏览器中使用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);