uni微信H5实现预览.pdf文件

用uniapp开发H5,客户需求需要直接预览.pdf文件,最开始想到了uni提供的方法uni.openDocument(OBJECT)但是仔细一看该方法不支持h5使用,果断就放弃了。
在这里插入图片描述
又尝试使用iframe嵌套的形式,在电脑端运行的时候发现是可以使用的,但到了真机发现这种方法也是不行,都是直接跳转到了web浏览器进行下载。
通过查阅,发现使用一个插件可以实现在线预览的效果,也就是本篇文章的主角pdf.js

官方网站

pdf.js: 点击查看.如下,官网也是非常简洁。
在这里插入图片描述
可以点击download进行下载,这里选择了如下版本。
在这里插入图片描述
下载后把压缩包解压到自己的项目的static文件夹中,
1.在static文件夹创建一个pdf的文件夹
2.把刚下载的pdf.js压缩包解压在新建的文件中
3.在需要使用的页面中添加如下代码

<template>
<!-- 可以使用这种方式 -->
	<web-view :src="url"></web-view>
<!-- 也可以使用 -->
<iframe scrolling="none" :src="`/static/pdf/web/viewer.html?file=${fileUrl}`" style="width:100%;height:100%;"></iframe>
</template>
<script>
export default {
	data() {
		return {
			// pdf.js的viewer.htm所在路径
			viewerUrl: '/static/pdf/web/viewer.html',
			// 要访问的pdf的路径
			fileUrl: 'https://www.tt.com/test.pdf',
			// 最终显示在web-view中的路径
			url: ''
		};
	},
	onLoad() {
		// h5,使用h5访问的时候记得跨域
		// #ifdef H5
		this.url = `${this.viewerUrl}?file=${encodeURIComponent(this.fileUrl)}`;
		// #endif
		// 判断是手机系统:安卓,使用pdf.js
		// #ifdef APP-PLUS
		if(plus.os.name === 'Android') {
			this.url = `${this.viewerUrl}?file=${encodeURIComponent(this.fileUrl)}`;
		}
		// ios,直接访问pdf所在路径
		else {
			this.url = encodeURIComponent(this.fileUrl);
		}
		// #endif
	},
	methods: {}
};
</script>

6.如果出现跨域问题,如下设置
直接修改源代码在viewer.js中,也可以全局搜素file origin does not match viewer,注释该代码块
在这里插入图片描述
通过以上操作,在项目中可以完美实现,交工~

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值