标签:numPages 插件 vue loading pdf PDF createConcert
需求说明:后台返回PDF文件流,前端使用vue-pdf插件进行展示
最开始搜索出的插件都是pdf.js,但由于该vue项目不是特别完整的结构,没有public/assets文件夹,一直报找不到那个文件,最后只好放弃换一个方式。
最终采用了vue-pdf插件,可以直接安装,方便快捷
下载vue-pdf
npm install vue-pdf -D
页面使用
<pdf v-for="i in numPages" :key="i" :src="src" :page="i" ref="myPdfComponent"></pdf>
import pdf from 'vue-pdf'
// 解决部分文字不显示的问题
import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js'
export default {
data () {
return {
src: '',
numPages: 0,
page: 1,
currentPage: 0
};
},
components: {
pdf
},
methods: {
//业务规则查看
createConcert() {
this.$loading.showLoading();
createConcert(params)
.then(res => {
this.$loading.closeLoading();
let da = res.busiDataResp.pdfBase64;//base64文件流
let datas = 'data:application/pdf;base64,' + da
this.pdfUrl = pdf.createLoadingTask({ url: datas, CMapReaderFactory });
this.pdfUrl.promise.then(pdf => {
this.numPages = pdf.numPages;
});
}).catch(function (error) {
this.$loading.closeLoading();
this.$toast.showToast(error);
});
},
},
}
}
mounted () {
this.createConcert();
},
PS:
1、该方法会在控制台报一些错误,但不影响功能使用
更新:
PS:2、该插件在第一次请求时正常显示,第二次请求会乱码,目前没有找到解决方法,使用强制刷新来避免这个问题
参考
https://blog.csdn.net/yuanmengdage/article/details/111871993
标签:numPages,插件,vue,loading,pdf,PDF,createConcert 来源: https://blog.csdn.net/qingmuzhang/article/details/119906249
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。