vue中使用vue-pdf組件實(shí)現(xiàn)文件預(yù)覽及相應(yīng)報(bào)錯(cuò)解決
前言
使用vue-pdf組件實(shí)現(xiàn)文件預(yù)覽功能 并在文件上增加操作按鈕vue3不支持vue-pdf,vue3項(xiàng)目用pdfjs-dist
一、安裝npm 依賴(lài)
1、在根目錄下輸入一下命令
npm i pdfjs-dist@2.5.207 --save npm i vue-pdf@4.2.0 --save
2、修改pacakge.json文件
"dependencies": {
"pdfjs-dist": "2.5.207",
"vue-pdf": "4.2.0",
},二、引入組件
import pdf from 'vue-pdf'
export default {
name: 'App',
components: {
pdf
},
···
}1、html中使用組件 單頁(yè)
<pdf :src="file"></pdf>
多頁(yè)
<pdf v-for="i in pageNum" :key="i" :src="file" :page="i"></pdf>
2、數(shù)據(jù)處理 單頁(yè)
export default {
···
data () {
return {
file: "/pdf/test.pdf"
}
}
}多頁(yè)
export default {
···
data () {
return {
file: "/pdf/test.pdf",
pageNum: 1
}
},
methods: {
getPageNum () {
let loadingTask = pdf.createLoadingTask(this.file)
loadingTask.promise.then(pdf => {
this.pageNum = pdf.numPages
}).catch(err => {
console.error('pdf加載失敗', err);
})
}
},
mounted () {
this.getPageNum()
}
}三、項(xiàng)目使用--代碼部分
<template>
<div class="pdf_wrap">
<pdf class="pdfView" v-for="item in pageNum" :key="item" :src="pdfUrl" :page="item"></pdf>
<div class="btnCont">
<div class="savebtn"
@click="sign">確認(rèn)</div>
</div>
</div>
</template>
<script>
import pdf from 'vue-pdf'
import { protocolGet } from "../../../api/validation/shareagreement";//調(diào)用的接口
export default {
components: {
pdf
},
props: {},
data() {
return {
title: this.$route.meta?.title || '',
pdfUrl:'',
pageNum: 1
}
},
watch: {},
computed: {},
methods: {
getprotocolGet(){
protocolGet().then((res)=>{
if(res.code==200){
this.pdfUrl= res.data.contractUrl//獲取到的協(xié)議展示
this.getPageNum();//pdf分頁(yè)處理
}
})
},
getPageNum () {
let loadingTask = pdf.createLoadingTask(this.pdfUrl,{withCredentials: false})
loadingTask.promise.then(pdf => {
this.pageNum = pdf.numPages
}).catch(err => {
console.error('pdf加載失敗', err);
})
},
sign() {
this.$router.push({
path: '/xxx',
})
},
},
created() {
this.getprotocolGet()
},
mounted() {
},
}
</script>
<style>
.pdf_wrap{
height: 100%;
padding-bottom: 1.4rem;
background-color: #fff;
}
</style>
<style scoped>
.pdf_wrap .btnCont {
position: fixed;
bottom: 0rem;
left: 0;
background-color: #fff;
padding: 0.1rem 0 .40rem 0;
width: 100%;
border: 0;
text-align: center;
}
.pdf_wrap .btnCont .savebtn{
color: #fff;
display: inline-block;
height: 0.8rem;
line-height: 0.8rem;
border-radius: 0.4rem;
width: 6.9rem;
margin: auto;
font-size: 0.28rem;
background-color: #ff0b95;
}
</style>四、報(bào)錯(cuò)解決
1、這種情況就是跨域了找后臺(tái)解決一下即可

2、 這種情況是pdf還沒(méi)加載出來(lái)就去渲染導(dǎo)致頁(yè)面pageNum找不到,調(diào)用接口加載完成后再去渲染pageNum

3、報(bào)這個(gè)錯(cuò)誤加上 {withCredentials: false} ,報(bào)錯(cuò)就沒(méi)有了

補(bǔ)充:vue使用vue-pdf預(yù)覽開(kāi)發(fā)正常,打包報(bào)錯(cuò)work.js404
修改依賴(lài)文件node_modules下worker-loader里的index.js文件里路徑
代碼如下(示例):
const filename = _loaderUtils2.default.interpolateName(this, options.name || 'static/js/[hash].worker.js', {
context: options.context || this.rootContext || this.options.context,
regExp: options.regExp
});
總結(jié)
到此這篇關(guān)于vue中使用vue-pdf組件實(shí)現(xiàn)文件預(yù)覽及相應(yīng)報(bào)錯(cuò)解決的文章就介紹到這了,更多相關(guān)vue vue-pdf實(shí)現(xiàn)文件預(yù)覽內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue3搭建組件庫(kù)開(kāi)發(fā)環(huán)境的示例詳解
這篇文章給大家分享Vue3搭建組件庫(kù)開(kāi)發(fā)環(huán)境,給大家講解依次搭建組件庫(kù)、example、文檔、cli,本文內(nèi)容是搭建組件庫(kù)的開(kāi)發(fā)環(huán)境的過(guò)程,感興趣的朋友跟隨小編一起看看吧2022-11-11
VUE路由動(dòng)態(tài)加載實(shí)例代碼講解
在本文里小編給大家整理了關(guān)于VUE路由動(dòng)態(tài)加載實(shí)例代碼以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-08-08
Vue中使用Printjs插件實(shí)現(xiàn)打印功能
Print.js 主要是為了幫助我們直接在我們的應(yīng)用程序中打印 PDF 文件,無(wú)需離開(kāi)界面,也無(wú)需使用嵌入,這篇文章主要介紹了Vue中使用Printjs插件實(shí)現(xiàn)打印功能,需要的朋友可以參考下2022-08-08
vue.js實(shí)現(xiàn)只能輸入數(shù)字的輸入框
這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)只能輸入數(shù)字的輸入框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
vue-video-player 通過(guò)自定義按鈕組件實(shí)現(xiàn)全屏切換效果【推薦】
這篇文章主要介紹了vue-video-player,通過(guò)自定義按鈕組件實(shí)現(xiàn)全屏切換效果,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
vue實(shí)現(xiàn)搜索關(guān)鍵詞高亮的詳細(xì)教程
這篇文章主要為大家介紹了vue實(shí)現(xiàn)搜索關(guān)鍵詞高亮的詳細(xì)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
vue3.0使用mapState,mapGetters和mapActions的方式
這篇文章主要介紹了vue3.0使用mapState,mapGetters和mapActions的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

