当前位置: 首页 > 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 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文件

相关文章:

  • Python(三)——列表
  • ansible
  • pytest
  • linux网络编程实战
  • STM32精确控制步进电机
  • uniapp 知识点
  • 给Windows系统设置代理的操作方法
  • DC00024基于ssm实验室预约管理系统java web项目web教师预约jsp预约管理系统
  • [sql-04] 连续出现至少三次的数字
  • 【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第十六章 Linux 第一个程序 HelloWorld
  • linux基础命令
  • uniapp框架中实现文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间
  • 排水系统C++
  • 信息安全工程师(22)密码学网络安全应用
  • 新品 | Teledyne FLIR IIS 推出Forge 1GigE SWIR 短波红外工业相机系列
  • PostgreSQL 17:新特性与性能优化深度解析
  • [Linux][进程] 命令行参数
  • React Native使用高德地图
  • 自动驾驶系列—自动驾驶MCU架构全方位解析:从单核到多核的选型指南与应用实例
  • 使用socket编程来实现一个简单的C/S模型(TCP协议)
  • 重视体重管理,筑牢健康基石
  • 梵蒂冈选出新教皇,外交部:望新教皇推动中梵关系不断改善
  • 胳膊一抬就疼,炒菜都成问题?警惕这种“炎症”找上门
  • 甘肃省政府原副省长赵金云被决定逮捕
  • 教育部、国家发改委联合启动实施教师教育能力提升工程
  • 国家主席习近平同普京总统举行小范围会谈