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路径下任意文件夹中,不支持相对路径
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论