uniapp预览pdf安卓打不开,可以直接新建commonwebview来跳转外部链接浏览pdf

项目场景:uniapp预览pdf安卓打不开,可以直接新建commonwebview来跳转外部链接浏览pdf

例如:uniapp里跳转外部链接


问题描述

例如:uniapp打开pdf安卓打不开,网上看了很多方法,都说安卓需要先下载再预览,但是本地测试调用uni.downloadFile访问生产服务器的文件会报错跨域,直接打包放生产运行控制台能返回success里的’下载成功‘,但实际上并没有下载文件


解决方案:

提示:不使用uni.downloadFile下载文件;进入资讯详情页A面先判断平台,如果是安卓直接通过外部链接方式打开pdf的url预览;如果是ios,则直接点击预览。

新建一个view页面commonwebview:

<template>
    <web-view :src="url"></web-view>
</template>

<script>
    export default {
        data() {
            return {
                url:''
            }
        },
        onLoad(item) {
            this.url = item.url
        }
    }
</script>

<style lang="scss">

</style>

资讯详情页A:
method里添加方法判断平台:

initPlatform(){
				uni.getSystemInfo({
					success: res => {
						console.log(res.platform);
						if (res.platform === 'android') {
							this.iOS = false;
						}else{
							this.iOS = true;
						}
					}
				});
			},

created()里调用initPlatform():

created() {
		this.initPlatform();
	},

在进入详情页方法中添加跳转(我这里是在init方法里,然后在onLoad里调用):

onLoad(e) {
		this.init();
	},

init() {
	if (this.iOS == false) {
		uni.navigateTo({
			url:'/pages/talent/commonwebview/commonwebview?url=' + this.htmlStr2
			})
		}
	}

注:我这里的页面是通过接口查询出html页面的代码(articleCon.content 也就是接口中的content ),然后通过div的v-html属性加载出页面,所以会存在截取pdf的url字符串的问题,下面附上截取方法:

<div v-html="articleCon.content" v-if="iOS"></div>

接口内容:
在这里插入图片描述
截取字符串:

		getCaption(str) {
		//获取某个字符串后面的字符串
				var index = str.lastIndexOf("ef="); //获取"ef="字符串首次出现的下标(这里的字符串可以根据自己的需要来写)
				str = str.substring(index + 4, str.length);
				return str;
			},
		getFront(str) {
		//获取前边的字符串
				var index = str.indexOf(".pdf"); 
				str = str.substring(0, index + 4);
				return str;
			},

这样,将上面接口获取到的html代码前后截取,就可以获得自己想要的pdf链接了


后续:

上面的方法过了两天之后,发现部分安卓机型仍然无法打开。那就直接给用户个链接,让用户复制去浏览器打开;或者将pdf转成png。附上uniapp弹框复制的代码,看下面这篇文章
https://blog.csdn.net/weixin_49524349/article/details/124734937?spm=1001.2014.3001.5502
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值