vue实现预览pdf功能

您所在的位置:网站首页 网页pdf预览 vue实现预览pdf功能

vue实现预览pdf功能

2023-03-15 22:06| 来源: 网络整理| 查看: 265

vue页面中的一部分实现预览pdf功能

一、全屏预览模式

先说直接全屏预览的,直接axios获取到数据,将流转为二进制文件,

可以window.open(后端返回文件流,前端把流转成url,在使用window.open就会打开一个新标签页全屏展示pdf) 也可以嵌入到a标签的href属性中 二、利用pdf.js嵌入到iframe中预览

第一步跟全屏一样,就是最后打开方式不一样pdf.js官网下载pdf.js文件将文件解压缩,将里面的build和web文件夹放在static目录下面,一定要是static目录目录结构如下在这里插入图片描述接着在组件里就可以直接使用了,iframe的原理是将一个html页面嵌入在另一个html页面中

1

 

附代码:vue组件中:

1

首先通过axios调用后台接口获取流数据

1 // 获取流 2 export function getStream(url, params) { 3 return new Promise((resolve, reject) => { 4 axios.get(url, { 5 params: params, 6 responseType: 'arraybuffer' // 关键,必须要设置响应类型,否则pdf没有内容都是空白页 7 }).then(res => { 8 resolve(res.data) 9 }).catch(err => { 10 reject(err.data) 11 }) 12 }) 13 }

 

流转成二进制文件方法

1 // 生成数据报告->pdf预览 2 pdfPreview(year) { 3 let param = { 4 types: this.types, 5 year: this.year 6 } 7 console.log('传递的参数为', param) 8 getDatareportData(param).then(res => { 9 console.log('调用生成数据报告接口返回数据', res) 10 const binaryData = []; 11 binaryData.push(res); 12 this.pdfUrl = window.URL.createObjectURL(new Blob(binaryData, {type: 'application/pdf'})); 13 // window.open(this.pdfUrl); 14 }) 15 }

 

但是这样iframe的高度始终是固定的,需要再动态改变一下高度

1 // 改变iframe高度 2 changeFrameHeight() { 3 var pdfCotainer = this.$refs.pdfCotainer; 4 pdfCotainer.height = document.documentElement.clientHeight; 5 }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3