uni-app在線預(yù)覽pdf文件的方法教程
這里推薦下載pdf.js 插件
PDF.js - Browse Files at SourceForge.net
特此注意 如果報(bào) Promise.withResolvers is not a function 請(qǐng)去查看版本兼容問題
降低pdf.js版本
提高node版本
下載完成后 在 static 文件夾下新建 pdf 文件夾,將解壓文件放進(jìn) pdf 文件夾下

在當(dāng)前需要預(yù)覽的vue頁面中,先將文件鏈接下載為本地文件,代碼如下
小tips 這里如果是超鏈接的形式 可以直接跳轉(zhuǎn) 不需要再去下載 (因?yàn)榭蛻粜枰诰€看 而不是先下載)
openPdf(url) {
uni.downloadFile({
//需要預(yù)覽的文件地址
url: url,
success: (res) => {
if (res.statusCode === 200) {
//下載成功,得到文件臨時(shí)地址
console.log('下載成功', res.tempFilePath);
//條件編譯,若為h5端則直接賦值文件地址
// #ifdef H5
let newUrl = res.tempFilePath
// #endif
//條件編譯,若為App端,則需要將本地文件系統(tǒng)URL轉(zhuǎn)換為平臺(tái)絕對(duì)路徑
// #ifdef APP-PLUS
let newUrl = plus.io.convertLocalFileSystemURL(res.tempFilePath)
// #endif
//這里新建一個(gè)vue頁面,跳轉(zhuǎn)并預(yù)覽pdf文檔
uni.navigateTo({
url: "/pages/previewArea/PdfPreview?url=" + url,
})
}
}
})
}這是新建的vue頁面,用于web-view預(yù)覽pdf文件,代碼如下
<template>
<view>
<!-- 全局pdf查看器 -->
<web-view :src="path"></web-view>
</view>
</template>
<script>
export default {
data() {
return {
viewerUrl: "/static/pdf/-pdf--master/hybrid/pdf.html",
path: "",
fileUrl: "",
}
},
onLoad(options) {
this.fileUrl = options.url;
},
onShow() {
//進(jìn)行拼接即可
this.path = `${this.viewerUrl}?url=${this.fileUrl}`
}
}
</script>
可以直接跳轉(zhuǎn)顯示

static/pdf/-pdf--master/hybrid/pdf.html 這個(gè)頁面 可以自定義添加下載按鈕
<body>
<div>
<div id="pdf-view"></div>
<div class="down" id="downPdf">下載</div>
</div>
<script src="html/pdf/pdf.js"></script>
<script src="html/pdf/pdf.worker.js"></script>
<script src="html/pdf/jquery-1.11.3.min.js" type="text/javascript" charset="utf-8">
</script>
<script src="html/pdf/pdfh5.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
xxxx
xxx
// 點(diǎn)擊調(diào)用下載
let downPdf = document.getElementById("downPdf");
document.getElementById("downPdf").addEventListener("click", async function (event) {
event.preventDefault();
try {
var downloadLink = document.createElement('a');
downloadLink.href = url; // 這里的url應(yīng)該是你的PDF文件的URL
downloadLink.download = url.split("/").pop()// 設(shè)置下載后的文件名
downloadLink.style.display = 'none';
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
} catch (error) {
console.log('error',error);
}
</script>
</body>
校驗(yàn)是否是pdf文件
let regPdf = /\.(pdf)$/.test(data.toLowerCase()) 是否pdf文件
let regImg = /\.(jpg|jpeg|png|gif)$/.test(data.toLowerCase()) 是否圖片文件
let regDoc = /\.(doc|docx)$/.test(data.toLowerCase()) 是否doc 或者 docx文件
總結(jié)
到此這篇關(guān)于uni-app在線預(yù)覽pdf文件的文章就介紹到這了,更多相關(guān)uni-app在線預(yù)覽pdf內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue前端左側(cè)菜單右側(cè)內(nèi)容的網(wǎng)站界面制作過程
這篇文章主要介紹了使用Vue和ElementUI制作一個(gè)帶有左側(cè)菜單和右側(cè)內(nèi)容區(qū)的網(wǎng)站頁面的過程,文中通過CSS樣式和深度作用符,實(shí)現(xiàn)了頁面的美化和功能的完善,需要的朋友可以參考下2025-02-02
使用vue.js實(shí)現(xiàn)聯(lián)動(dòng)效果的示例代碼
本篇文章主要介紹了使用vue.js實(shí)現(xiàn)聯(lián)動(dòng)效果的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
基于vue-cli 打包時(shí)抽離項(xiàng)目相關(guān)配置文件詳解
下面小編就為大家分享一篇基于vue-cli 打包時(shí)抽離項(xiàng)目相關(guān)配置文件詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03
關(guān)于vue3?解決getCurrentInstance?打包后線上環(huán)境報(bào)錯(cuò)問題
這篇文章主要介紹了vue3?解決getCurrentInstance?打包后線上環(huán)境報(bào)錯(cuò)問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
Vue+Openlayers實(shí)現(xiàn)實(shí)時(shí)坐標(biāo)點(diǎn)展示
這篇文章主要為大家詳細(xì)介紹了Vue+Openlayers實(shí)現(xiàn)實(shí)時(shí)坐標(biāo)點(diǎn)展示,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
flask和vue前后端分離項(xiàng)目部署的示例代碼
本文主要介紹了flask和vue前后端分離項(xiàng)目部署的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12

