uni-app在线预览pdf

[复制链接]
发表于 2026-1-14 04:52:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这里保举下载pdf.js 插件
PDF.js - Browse Files at SourceForge.net
   特此留意 假如报 Promise.withResolvers is not a function 请去查察版本兼容标题  
   下载完成后 在  static  文件夹下新建  pdf  文件夹,将解压文件放进  pdf  文件夹下

在当前须要预览的vue页面中,先将文件链接下载为当地文件,代码如下
小tips 这里假如是超链接的情势 可以直接跳转 不须要再去下载 (由于客户须要在线看 而不是先下载)
  1. openPdf(url) {
  2.     uni.downloadFile({
  3.                 //需要预览的文件地址
  4.                 url: url,
  5.                 success: (res) => {
  6.                         if (res.statusCode === 200) {
  7.                                 //下载成功,得到文件临时地址
  8.                                 console.log('下载成功', res.tempFilePath);
  9.                                 //条件编译,若为h5端则直接赋值文件地址                       
  10.                                 // #ifdef H5
  11.                                 let newUrl = res.tempFilePath
  12.                                 // #endif
  13.                                 //条件编译,若为App端,则需要将本地文件系统URL转换为平台绝对路径       
  14.                                 // #ifdef APP-PLUS
  15.                                 let newUrl = plus.io.convertLocalFileSystemURL(res.tempFilePath)
  16.                                 // #endif
  17.                                 //这里新建一个vue页面,跳转并预览pdf文档
  18.                                 uni.navigateTo({
  19.                                         url: "/pages/previewArea/PdfPreview?url=" + url,
  20.                                 })
  21.                         }
  22.                 }
  23.         })
  24. }
复制代码
这是新建的vue页面,用于web-view预览pdf文件,代码如下
  1. <template>
  2.   <view>
  3.     <!-- 全局pdf查看器 -->
  4.     <web-view :src="path"></web-view>
  5.   </view>
  6. </template>
  7. <script>
  8. export default {
  9.   data() {
  10.     return {
  11.       viewerUrl: "/static/pdf/-pdf--master/hybrid/pdf.html",
  12.       path: "",
  13.           fileUrl: "",
  14.     }
  15.   },
  16.   onLoad(options) {
  17.     this.fileUrl = options.url;
  18.   },
  19.         onShow() {
  20.     //进行拼接即可
  21.     this.path = `${this.viewerUrl}?url=${this.fileUrl}`
  22.   }
  23. }
  24. </script>
复制代码
可以直接跳转表现

static/pdf/-pdf--master/hybrid/pdf.html 这个页面 可以自界说添加下载按钮
  1. <body>
  2.         <div>
  3.                 <div id="pdf-view"></div>
  4.                 <div class="down" id="downPdf">下载</div>
  5.         </div>
  6.     <script src="html/pdf/pdf.js"></script>
  7.         <script src="html/pdf/pdf.worker.js"></script>
  8.         <script src="html/pdf/jquery-1.11.3.min.js" type="text/javascript" charset="utf-8">   
  9.     </script>
  10.         <script src="html/pdf/pdfh5.js" type="text/javascript" charset="utf-8"></script>
  11.         <script type="text/javascript">
  12.         xxxx
  13.         xxx
  14.         // 点击调用下载
  15.                 let downPdf = document.getElementById("downPdf");
  16.         document.getElementById("downPdf").addEventListener("click", async function (event) {
  17.                         event.preventDefault();
  18.                         try {
  19.                                 var downloadLink = document.createElement('a');
  20.                                 downloadLink.href = url; // 这里的url应该是你的PDF文件的URL
  21.                                 downloadLink.download = url.split("/").pop()// 设置下载后的文件名
  22.                                 downloadLink.style.display = 'none';
  23.                                 document.body.appendChild(downloadLink);
  24.                                 downloadLink.click();
  25.                                 document.body.removeChild(downloadLink);
  26.                         } catch (error) {
  27.                                 console.log('error',error);
  28.                         }
  29.         </script>
  30. </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文件
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表