uniapp开发微信小程序预览pdf文件

情况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()
    }
  });
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值