0


uni-app在线预览pdf

这里推荐下载pdf.js 插件

PDF.js - Browse Files at SourceForge.net

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

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

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

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

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

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>
  </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 这个页面 可以自定义添加下载按钮

<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

        // 点击调用下载
        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文件

标签: uni-app pdf

本文转载自: https://blog.csdn.net/m1011815213/article/details/142618991
版权归原作者 家里有只小肥猫 所有, 如有侵权,请联系我们删除。

“uni-app在线预览pdf”的评论:

还没有评论