uni-app在线预览pdf

家里有只小肥猫 2024-10-25 08:33:01 阅读 62

这里推荐下载pdf.js 插件

PDF.js - Browse Files at SourceForge.net

特此注意 如果报 Promise.withResolvers is not a function 请去查看版本兼容问题  

降低pdf.js版本提高node版本

下载完成后 在  static  文件夹下新建  pdf  文件夹,将解压文件放进  pdf  文件夹下

在当前需要预览的vue页面中,先将文件链接下载为本地文件,代码如下

小tips 这里如果是超链接的形式 可以直接跳转 不需要再去下载 (因为客户需要在线看 而不是先下载)

<code>openPdf(url) {

uni.downloadFile({

//需要预览的文件地址

url: url,

success: (res) => {

if (res.statusCode === 200) {

//下载成功,得到文件临时地址

console.log('下载成功', res.tempFilePath);

//条件编译,若为h5端则直接赋值文件地址

// #ifdef H5

let newUrl = res.tempFilePath

// #endif

//条件编译,若为App端,则需要将本地文件系统URL转换为平台绝对路径

// #ifdef APP-PLUS

let newUrl = plus.io.convertLocalFileSystemURL(res.tempFilePath)

// #endif

//这里新建一个vue页面,跳转并预览pdf文档

uni.navigateTo({

url: "/pages/previewArea/PdfPreview?url=" + url,

})

}

}

})

}

这是新建的vue页面,用于web-view预览pdf文件,代码如下

<template>

<view>

<!-- 全局pdf查看器 -->

<web-view :src="path"></web-view>code>

</view>

</template>

<script>

export default {

data() {

return {

viewerUrl: "/static/pdf/-pdf--master/hybrid/pdf.html",

path: "",

fileUrl: "",

}

},

onLoad(options) {

this.fileUrl = options.url;

},

onShow() {

//进行拼接即可

this.path = `${this.viewerUrl}?url=${this.fileUrl}`

}

}

</script>

可以直接跳转显示

static/pdf/-pdf--master/hybrid/pdf.html 这个页面 可以自定义添加下载按钮

<code><body>

<div>

<div id="pdf-view"></div>code>

<div class="down" id="downPdf">下载</div>code>

</div>

<script src="html/pdf/pdf.js"></script>code>

<script src="html/pdf/pdf.worker.js"></script>code>

<script src="html/pdf/jquery-1.11.3.min.js" type="text/javascript" charset="utf-8"> code>

</script>

<script src="html/pdf/pdfh5.js" type="text/javascript" charset="utf-8"></script>code>

<script type="text/javascript">code>

xxxx

xxx

// 点击调用下载

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应该是你的PDF文件的URL

downloadLink.download = url.split("/").pop()// 设置下载后的文件名

downloadLink.style.display = 'none';

document.body.appendChild(downloadLink);

downloadLink.click();

document.body.removeChild(downloadLink);

} catch (error) {

console.log('error',error);

}

</script>

</body>

校验是否是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文件



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。