当前位置: 首页 > news >正文

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 H5let newUrl = res.tempFilePath// #endif//条件编译,若为App端,则需要将本地文件系统URL转换为平台绝对路径	// #ifdef APP-PLUSlet 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">xxxxxxx// 点击调用下载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文件的URLdownloadLink.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文件

相关文章:

  • LeetCode 704. 二分查找
  • attrs:Python的类装饰器(简化类定义)
  • 华为-单臂路由
  • 怎样将多个视频合并成一个?7种无损视频合并技巧,1分钟剪辑出大片!
  • 腾讯邮箱上传附件卡、慢、无法上传,下载慢问题处理
  • Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)
  • Tableau数据可视化入门
  • 一款辅助渗透测试过程,让渗透测试报告一键生成
  • UI设计师面试整理-面向用户的设计
  • 从碎片到整合:EasyCVR平台如何重塑城市感知系统的视频数据生态
  • 一文说透RTMP、RTSP、RTP、HLS、MPEG-DASH
  • Linux系统使用iptables配置入站端口
  • 19 vue3之自定义指令Directive按钮鉴权
  • 在AI时代,程序员如何提升核心竞争力?
  • 本地电脑基于nginx的https单向认证和双向认证(自制证书+nginx配置)保姆级
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • android图片蒙层
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • crontab执行失败的多种原因
  • ES6简单总结(搭配简单的讲解和小案例)
  • JavaScript设计模式与开发实践系列之策略模式
  • js面向对象
  • Sass 快速入门教程
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 创建一种深思熟虑的文化
  • 关于List、List?、ListObject的区别
  • 解析带emoji和链接的聊天系统消息
  • 前端_面试
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 使用API自动生成工具优化前端工作流
  • 手机端车牌号码键盘的vue组件
  • 译米田引理
  • 用element的upload组件实现多图片上传和压缩
  • 字符串匹配基础上
  • 走向全栈之MongoDB的使用
  • C# - 为值类型重定义相等性
  • 阿里云移动端播放器高级功能介绍
  • 进程与线程(三)——进程/线程间通信
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​数据链路层——流量控制可靠传输机制 ​
  • #07【面试问题整理】嵌入式软件工程师
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (二)linux使用docker容器运行mysql
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)计算机毕业设计ssm电影分享网站
  • (五)activiti-modeler 编辑器初步优化
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验