vue移动端PDF预览

pdf预览在项目中是很常见的,PC端可以直接打开一个新窗口预览,因为这里的PDF是一个支持下载的PDF, 所以在移动端打开PDF链接时候是让下载,然后就想到了在页面上展示/预览PDF的内容,下面是我的具体操作步骤, 在此记录一下。

-------------------------------------------- 分割线 --------------------------------------------
2020-09-03补充内容: 今日又在vue中读取PDF文件, 结果报错this.pdfSrc.then is not a function, 报错信息如下图。查了半天发现少了一个promise
在这里插入图片描述

解决办法见下面js部分代码, 帮到你们的话, 就动动小手指给我点个赞鼓励一下吧~
-------------------------------------------- 分割线 --------------------------------------------

vue中安装依赖
npm install --sava vue-pdf

一般PDF都是多页的, 当然插件也是支持多页的, 移动端上下滑动即可查看PDF。

多页展示

html部分

<pdf
      v-for="i in numPages"
      ref="pdfs"
      :src="pdfSrc"
      :key="i"
      :page="i"
    >
</pdf>

js部分

<script>
	import pdf from 'vue-pdf' // 引入vue-pdf插件
	export default {
		name: 'protocol',
		components: {pdf}, // 注册PDF组件
		data() {
			return {
				pdfSrc: '', // PDF文件路径
                numPages: []
			}
		},
		methods: {
			getProtocol() {
				this.pdfSrc = pdf.createLoadingTask(this.pdfSrc)
				// console.log('pdfSrc', this.pdfSrc)
				// this.pdfSrc.then(pdf => { // 此行为错误示例, 报错this.pdfSrc.then is not a function
				this.pdfSrc.promise.then(pdf => {
					// console.log('pdf', pdf)
					this.numPages = pdf.numPages
				})
			}
		}
	}
</script>
小米机型PDF预览问题

vue-pdf提供的props:src可以传入pdf的url地址,也可以base64字符串。但在小米机型下,使用线上url地址时,pdf加载不出来。这里,我们可以统一让后台处理下,返回base64字符串,这样在移动端任何机型下都能完整加载出pdf内容。

this.pdfSrc = `data:application/pdf;base64,${res.pdfBase64Str}`
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值