1、npm安装
npm install --save vue-pdf
2、页面引入

3、具体实现
<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页码,val传过来区分上一页下一页的值,0上一页,1下一页
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加载时
loadpdfhandler (e) {
this.currentpage = 1 // 加载的时候先加载第一页
},5、完整代码
<template>
<div>
<div style="text-align: left;">
<h2>行业资料</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文件页码
pagecount: 0, // pdf文件总页数
filetype: 'pdf', // 文件类型
pdfsrc: '', // pdf文件地址
defaultprops: {
children: 'children',
label: 'name'
},
tabledata: [{
id: 1,
name: '道路工程资料',
children:[
{
id: 2,
name: '公路工程资料编制概述',
children:[
{
id: 21,
name: '路面工程部分分项划分表',
src: '/1.pdf',
},
{
id: 13,
name: '一般建设项目单位工程划分表',
src: '/2.pdf',
},
{
id: 14,
name: '路基工程部分分项划分表',
src: '/3.pdf',
},
{
id: 33,
name: '桥梁工程部分分项划分表',
src: '/4.pdf',
},
{
id: 34,
name: '隧道工程部分分项划分表',
src: '/5.pdf',
}
]
},
{
id: 3,
name: '公路工程竣工资料',
children:[
{
id: 7,
name: '公路工程竣工文件编排层次',
src: '/5.pdf',
},
{
id: 8,
name: '工程洽商记录表',
src: '/4.pdf',
},
{
id: 9,
name: '工程设计表更、洽商一览表',
src: '/3.pdf',
}
]
}
]}]
}
},
methods:{
// 改变pdf页码,val传过来区分上一页下一页的值,0上一页,1下一页
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加载时
loadpdfhandler(e) {
this.currentpage = 1 // 加载的时候先加载第一页
},
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翻页不是我想要的效果,因此只能另寻它法。
注意:
pdf文件需要放在public路径下任意文件夹中,不支持相对路径
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论