1.下载pdf文件
因为pdf文件是传到oss上的,地址是下载地址,所可以使用a标签下载,但不能使用iframe等方法预览
<el-button class="download" v-if="list&&list.length>0" @click="downloadFile(fileList)" type="text">下载</el-button>
downloadFile(fileList){
window.location.href = fileList[0].url
this.$message.success('下载成功!');
},
2.使用vue-pdf预览pdf文件
1.安装vue-pdf
npm install --save vue-pdf
2.使用
<template>
<div class="pdf">
<pdf
ref="pdf"
:src="pdfUrl"
:page="pageNum"
:rotate="pageRotate"
@password="password"
@progress="loadedRatio = $event"
@page-loaded="pageLoaded($event)"
@num-pages="pageTotalNum=$event"
@error="pdfError($event)"
@link-clicked="page = $event">
</pdf>
<div class="pdf-tab">
<el-button type="text" class="btn-def btn-pre" @click.stop="firstPage" :disabled="pageNum===1">首页</el-button>
<el-button type="text" class="btn-def btn-pre" @click.stop="prePage" :disabled="pageNum===1">上一页</el-button>
<el-button type="text" class="btn-def btn-next" @click.stop="nextPage" :disabled="pageNum===pageTotalNum">下一页</el-button>
<el-button type="text" class="btn-def btn-pre" @click.stop="lastPage" :disabled="pageNum===pageTotalNum">尾页</el-button>
<el-button type="text" class="btn-def" @click.stop="clock">顺时针</el-button>
<el-button type="text" class="btn-def" @click.stop="counterClock">逆时针</el-button>
<el-button type="text" class="btn-def" @click.stop="pdfPrintAll">全部打印</el-button>
<el-button type="text" class="btn-def" @click.stop="pdfPrint">部分打印</el-button>
</div>
<div class="pdf-page">{{pageNum}}/{{pageTotalNum}}</div>
<!-- <div>进度:{{loadedRatio}}</div>
<div>页面加载成功: {{curPageNum}}</div> -->
</div>
</template>
<script>
import pdf from 'vue-pdf'
export default {
name: 'Pdf',
components:{
pdf
},
props: {
pdfUrl: {
type: String
}
},
data(){
return {
pageNum:1,
pageTotalNum:1,
pageRotate:0,
// 加载进度
loadedRatio:0,
curPageNum:0,
}
},
mounted: function() {
},
methods: {
firstPage() {
this.pageNum = 1
},
prePage(){
var p = this.pageNum
p = p>1?p-1:this.pageTotalNum
this.pageNum = p
},
nextPage(){
var p = this.pageNum
p = p<this.pageTotalNum?p+1:1
this.pageNum = p
},
lastPage() {
this.pageNum = this.pageTotalNum
},
clock(){
this.pageRotate += 90
},
counterClock(){
this.pageRotate -= 90
},
password(updatePassword, reason) {
updatePassword(prompt('password is "123456"'))
},
pageLoaded(e){
this.curPageNum = e
},
pdfError(error){
console.error(error)
},
pdfPrintAll(){
this.$refs.pdf.print()
},
pdfPrint(){
this.$refs.pdf.print(100,[1,2])
},
}
}
</script>
<style lang="scss" scoped>
.pdf-tab {
display: flex;
}
.pdf-page {
text-align: right;
}
</style>
版权声明:本文为qq_42905523原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。