vue預(yù)覽本地pdf文件方法之vue-pdf組件使用
更新時(shí)間:2024年03月21日 11:20:16 作者:菜鳥茜
這篇文章主要介紹了vue預(yù)覽本地pdf文件方法之vue-pdf組件使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
1、npm安裝
npm install --save vue-pdf
2、頁(yè)面引入

3、具體實(shí)現(xiàn)
<div class="pdf" v-show="fileType === 'pdf'">
<p class="arrow">
<span @click="changePdfPage(0)" class="turn"
:class="{grey: currentPage==1}">Preview</span>
{{currentPage}} / {{pageCount}}
<span @click="changePdfPage(1)" class="turn"
:class="{grey: currentPage==pageCount}">Next</span>
</p>
<pdf :src="pdfSrc" :page="currentPage" @num-pages="pageCount=$event"
@page-loaded="currentPage=$event" @loaded="loadPdfHandler">
</pdf>
</div>4、method方法
// 改變PDF頁(yè)碼,val傳過來(lái)區(qū)分上一頁(yè)下一頁(yè)的值,0上一頁(yè),1下一頁(yè)
changePdfPage (val) {
// console.log(val)
if (val === 0 && this.currentPage > 1) {
this.currentPage--
// console.log(this.currentPage)
}
if (val === 1 && this.currentPage < this.pageCount) {
this.currentPage++
// console.log(this.currentPage)
}
},
// pdf加載時(shí)
loadPdfHandler (e) {
this.currentPage = 1 // 加載的時(shí)候先加載第一頁(yè)
},5、完整代碼
<template>
<div>
<div style="text-align: left;">
<H2>行業(yè)資料</H2>
<el-divider>
</el-divider>
<el-container>
<el-aside width="300px" style="border: 1px solid #eee;height: 1000px; background-color: #D3DCE6;">
<div class="myTree">
<el-tree default-expand-all :props="defaultProps" :data="tableData" @node-click="handleNodeClick"></el-tree>
</div>
</el-aside>
<el-container style="border: 1px solid #eee;margin-left: 10px;">
<div class="pdf" v-show="fileType === 'pdf'">
<p class="arrow">
<span :class="{grey: currentPage==1}" @click="changePdfPage(0)" class="turn">Preview</span>
{{currentPage}} / {{pageCount}}
<span :class="{grey: currentPage==pageCount}" @click="changePdfPage(1)" class="turn">Next</span>
</p>
<pdf
:page="currentPage"
:src="pdfSrc"
@loaded="loadPdfHandler"
@num-pages="pageCount=$event"
@page-loaded="currentPage=$event">
</pdf>
</div>
</el-container>
</el-container>
</div>
</div>
</template><script>
import pdf from 'vue-pdf'
export default {
name: "IndustryInformation",
components: {pdf},
data(){
return {
currentPage: 0, // pdf文件頁(yè)碼
pageCount: 0, // pdf文件總頁(yè)數(shù)
fileType: 'pdf', // 文件類型
pdfSrc: '', // pdf文件地址
defaultProps: {
children: 'children',
label: 'name'
},
tableData: [{
id: 1,
name: '道路工程資料',
children:[
{
id: 2,
name: '公路工程資料編制概述',
children:[
{
id: 21,
name: '路面工程部分分項(xiàng)劃分表',
src: '/1.pdf',
},
{
id: 13,
name: '一般建設(shè)項(xiàng)目單位工程劃分表',
src: '/2.pdf',
},
{
id: 14,
name: '路基工程部分分項(xiàng)劃分表',
src: '/3.pdf',
},
{
id: 33,
name: '橋梁工程部分分項(xiàng)劃分表',
src: '/4.pdf',
},
{
id: 34,
name: '隧道工程部分分項(xiàng)劃分表',
src: '/5.pdf',
}
]
},
{
id: 3,
name: '公路工程竣工資料',
children:[
{
id: 7,
name: '公路工程竣工文件編排層次',
src: '/5.pdf',
},
{
id: 8,
name: '工程洽商記錄表',
src: '/4.pdf',
},
{
id: 9,
name: '工程設(shè)計(jì)表更、洽商一覽表',
src: '/3.pdf',
}
]
}
]}]
}
},
methods:{
// 改變PDF頁(yè)碼,val傳過來(lái)區(qū)分上一頁(yè)下一頁(yè)的值,0上一頁(yè),1下一頁(yè)
changePdfPage(val) {
// console.log(val)
if (val === 0 && this.currentPage > 1) {
this.currentPage--
// console.log(this.currentPage)
}
if (val === 1 && this.currentPage < this.pageCount) {
this.currentPage++
// console.log(this.currentPage)
}
},
// pdf加載時(shí)
loadPdfHandler(e) {
this.currentPage = 1 // 加載的時(shí)候先加載第一頁(yè)
},
handleNodeClick(data) {
this.pdfSrc = data.src;
}
}
}
</script><style scoped>
.myTree /deep/ .el-tree {
position: relative;
cursor: default;
color: #606266;
background-color: #D3DCE6;
}
</style>6、最終效果

后記:
主要是priview和next翻頁(yè)不是我想要的效果,因此只能另尋它法。
注意:
pdf文件需要放在public路徑下任意文件夾中,不支持相對(duì)路徑
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Vue實(shí)現(xiàn)PDF文件預(yù)覽的方法詳解
- vue-pdf如何通過文件流預(yù)覽pdf文件
- vue如何在線預(yù)覽各類型文件
- 如何用vue-pdf包實(shí)現(xiàn)pdf文件預(yù)覽,支持分頁(yè)
- vue2.0如何借用vue-pdf實(shí)現(xiàn)在線預(yù)覽pdf文件
- 詳解vue2如何實(shí)現(xiàn)點(diǎn)擊預(yù)覽本地文件
- Vue如何實(shí)現(xiàn)文件預(yù)覽和下載功能的前端上傳組件
- Vue實(shí)現(xiàn)微信小程序中預(yù)覽文件的縮放功能
- vue3中做文件預(yù)覽的項(xiàng)目實(shí)踐
相關(guān)文章
vue.js實(shí)現(xiàn)簡(jiǎn)單輪播圖效果
這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)簡(jiǎn)單輪播圖效果的相關(guān)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Vue自定義指令學(xué)習(xí)及應(yīng)用詳解
這篇文章主要為大家詳細(xì)介紹了Vue中自定義指令的學(xué)習(xí)以及如何利用Vue制作一個(gè)簡(jiǎn)單的學(xué)生信息管理系統(tǒng),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05
ToB項(xiàng)目如何沉淀業(yè)務(wù)公共組件示例詳解
這篇文章主要為大家介紹了ToB項(xiàng)目如何沉淀業(yè)務(wù)公共組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
vue使用stompjs實(shí)現(xiàn)mqtt消息推送通知
這篇文章主要為大家詳細(xì)介紹了vue中使用stompjs實(shí)現(xiàn)mqtt消息推送通知,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
vscode搭建vue環(huán)境完整圖文教程(適合新手小白)
Vue框架的優(yōu)秀設(shè)計(jì)和強(qiáng)大的生態(tài)系統(tǒng)成為了越來(lái)越多開發(fā)者選擇Vue的原因,在實(shí)際項(xiàng)目過程中一個(gè)高效的開發(fā)環(huán)境能夠大大提高開發(fā)效率,這篇文章主要給大家介紹了關(guān)于vscode搭建vue環(huán)境的相關(guān)資料,需要的朋友可以參考下2023-10-10

