情况1:后台提供的pdf地址可以直接在浏览器中打开预览
//根据不同的系统执行不同的方法
const pdfURL=''; //后台返回的要预览的pdf地址
switch (uni.getSystemInfoSync().platform) {
case 'android':this.openReport(pdfURL);break;
case 'ios':uni.navigateTo({url: '/pages/common/view?url='+encodeURIComponent(pdfURL)});break;
default:break;
}
//android预览方式
function openReport(url) {
uni.showLoading({
title: '加载中',
mask: true
})
wx.downloadFile({
url: url,
success: function(res) {
uni.hideLoading()
var filePath = res.tempFilePath;
uni.showLoading({
title: '正在打开',
mask: true
})
wx.openDocument({
filePath: filePath,
fileType: 'pdf',
success: function(res) {
uni.hideLoading()
},
fail: function(err) {
uni.hideLoading()
}
});
},
fail: function(err) {
uni.hideLoading()
}
});
}
//ios需新建一个页面使用web-view方式预览,/pages/common/view.vue如下
<template>
<view>
<web-view :src="webUrl"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
webUrl:''
}
},
onLoad(option) {
if(option.url){
this.webUrl=decodeURIComponent(option.url);
}
}
}
</script>
<style scoped lang="scss">
</style>
情况2:后台提供的pdf地址不可以在浏览器中打开,在浏览器中打开时直接变成了下载
//直接调用如下方式预览,url传入后台提供的pdf地址
function openReport(url) {
uni.showLoading({
title: '加载中',
mask: true
})
wx.downloadFile({
url: url,
filePath: wx.env.USER_DATA_PATH + "/fp.pdf",
success: function(res) {
uni.hideLoading();
const filePath = res.filePath;
uni.showLoading({
title: '正在打开',
mask: true
})
wx.openDocument({
filePath: filePath,
fileType: 'pdf',
success: function(res) {
uni.hideLoading()
},
fail: function(err) {
uni.hideLoading()
}
});
},
fail: function(err) {
uni.hideLoading()
}
});
}