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,注释该代码块
在这里插入图片描述
通过以上操作,在项目中可以完美实现,交工~

猜你喜欢

转载自blog.csdn.net/qq_38188228/article/details/123833629