小编典典

Phonegap InAppBrowser显示pdf 2.7.0

javascript

我想使用Android中的phonegap InAppBrowser显示外部PDF,但无法正常工作。

这是我的JS代码:

<script>
function openPDF() {
     var ref = window.open('http://www.i-drain.net/userfiles/file/einbauanleitung_iboard.pdf', '_blank', 'location=yes');
     ref.addEventListener('loadstart', function(event) { alert('start: ' + event.url); });
     ref.addEventListener('loadstop', function(event) { alert('stop: ' + event.url); });
     ref.addEventListener('loaderror', function(event) { alert('error: ' + event.message); });
     ref.addEventListener('exit', function(event) { alert(event.type); });
}


</script>

我想在单击图像后打开pdf,所以我使用以下html代码:

 <a href="#" onclick="openPDF()" >
   <img src="images/button.png">
 </a>

阅读 324

收藏
2020-05-01

共1个答案

小编典典

对于每个被这个问题困扰的人,我终于找到了它们:

HTML 5对象标记: 不起作用

嵌入式标签: 不起作用

childBrowser插件: 我认为它可以工作,但是它是针对2.0.0版本设计的。因此,您会遇到很多错误,所以我没有使它起作用。

Phonegap InAppViewer: 如果您这样使用它:

window.open('http://www.example.com/test.pdf', '_blank', 'location=yes')

它不会工作。InAppViewer无法打开PDF,该PDF是外部存储还是本地存储都没有关系。

到目前为止,我的解决方案(不是实际的想法):

您可以使用_system调用window函数。像那样:

window.open('http://www.example.com/test.pdf', '_system', 'location=yes')

这将在常规浏览器中打开PDF并下载。下载后,它将询问是否应使用PDF查看器打开它。但是您必须返回到您的应用,然后再将其打开。

另一种可能性是,您可以使用Phonegap Filesystem API将其下载到sdcard中,如下所示:

var fileTransfer = new FileTransfer();
fileTransfer.download(
"http://developer.android.com/assets/images/home/ics-android.png",
"file://sdcard/ics-android.png",
function(entry) {
    alert("download complete: " + entry.fullPath);
},
function(error) {
    alert("download error source " + error.source);
    alert("download error target " + error.target);
    alert("upload error code" + error.code);
});

我发现的最后一件事是,使用Google docs / drive将其与链接到google docs的InAppViewer一起打开:

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {

window.open('https://docs.google.com/viewer?url=http://www.example.com/test.pdf&embedded=true', '_blank', 'location=yes'); 
ref = window.open('index.html', '_self');
 }

因此,即使您更改了pdf文件,它仍然可以使用

希望本摘要有助于您节省时间。如果还有其他解决方案,请告诉我

2020-05-01