vue2.0如何借用vue-pdf實(shí)現(xiàn)在線預(yù)覽pdf文件
在需求中,經(jīng)常遇見pdf的在線預(yù)覽效果
實(shí)現(xiàn)原理:借用依賴vue-pdf
vue-pdf推薦網(wǎng)址:https://www.npmjs.com/package/vue-pdf
實(shí)現(xiàn)效果

pdf文件樣式

實(shí)現(xiàn)步驟
一:安裝依賴
npm i --save vue-pdf
二:頁(yè)面使用 vue文件中
<template>
<div class="read">
<van-nav-bar
title="預(yù)覽"
left-arrow
@click-left="onClickLeft"
/>
<div class="pdf" v-show="fileType === 'pdf'">
<p class="arrow" style="text-align:center">
<!-- // 上一頁(yè) -->
<van-tag color="#7232dd" plain @click="changePdfPage(0)">上一頁(yè)</van-tag>
{{currentPage}} / {{pageCount}}
<!-- // 下一頁(yè) -->
<van-tag color="#7232dd" @click="changePdfPage(1)">下一頁(yè)</van-tag>
</p>
<!--
自己引入就可以使用,這里我的需求是做了分頁(yè)功能,如果不需要分頁(yè)功能,只要src就可以了
src:需要展示的PDF地址
currentPage:當(dāng)前展示的PDF頁(yè)碼
PDF文件總頁(yè)碼
一開始加載的頁(yè)面
loadPdfHandler:加載事件
-->
<pdf
:src="src"
:page="currentPage"
@num-pages="pageCount=$event"
@page-loaded="currentPage=$event"
@loaded="loadPdfHandler">
</pdf>
</div>
</div>
</template>
js文件中
// 引入組件
import pdf from 'vue-pdf'
// 引入文件
import pdfUrl from './example.pdf'
export default {
components: {
pdf
},
data () {
return {
currentPage: 0, // pdf文件頁(yè)碼
pageCount: 0, // pdf文件總頁(yè)數(shù)
fileType: 'pdf', // 文件類型
src: pdfUrl, // pdf文件地址
}
},
created () {
// 有時(shí)PDF文件地址會(huì)出現(xiàn)跨域的情況,這里最好處理一下
this.src = pdf.createLoadingTask(this.src)
},
methods: {
// 改變PDF頁(yè)碼,val傳過來區(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è)
}
}
}
三:可能問題

問題原因:
缺少解析pdf所需loader
問題解決:
1:下載依賴
- file-loader:file-loader可以用來幫助webpack打包處理一系列的文件;
- 比如:.png 、 .jpg 、.jepg等格式的圖片,pdf格式的文件等等
npm install --save-dev file-loader or cnpm install --save-dev file-loader
2:配置vue.config.js文件
module.exports = {
// webpack配置
chainWebpack: config => {
config.module
.rule('pdf')
.test(/\.pdf$/)
.use('file')
.loader('file-loader')
.end();
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于vue實(shí)現(xiàn)分頁(yè)組件的示例代碼
分頁(yè)組件是一種用戶界面元素,用于在長(zhǎng)列表或數(shù)據(jù)集中分割內(nèi)容,分頁(yè)組件是每個(gè)開發(fā)人員必須掌握的一個(gè)組件,廣泛應(yīng)用在各個(gè)場(chǎng)所,用以用戶方便閱讀等,本文就給大家介紹一下如何基于vue寫出的分頁(yè)組件,需要的朋友可以參考下2023-08-08
Vue數(shù)組中出現(xiàn)__ob__:Observer無法取值問題的解決方法
__ob__: Observer這個(gè)屬性其實(shí)是Vue監(jiān)控變量產(chǎn)生的,下面這篇文章主要給大家介紹了關(guān)于Vue數(shù)組中出現(xiàn)__ob__:?Observer無法取值問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
vue+Element-ui實(shí)現(xiàn)分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了vue+Element-ui實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
詳解如何在Vue項(xiàng)目中導(dǎo)出Excel
這篇文章主要介紹了如何在Vue項(xiàng)目中導(dǎo)出Excel,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Vue登錄頁(yè)面的動(dòng)態(tài)粒子背景插件實(shí)現(xiàn)
本文主要介紹了Vue登錄頁(yè)面的動(dòng)態(tài)粒子背景插件實(shí)現(xiàn),將登錄組件背景設(shè)置為 "粒子背景",具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
vue3.0中給自己添加一個(gè)vue.config.js配置文件
這篇文章主要介紹了vue3.0中給自己添加一個(gè)vue.config.js配置文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07

