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

uni-app移动端与PC端兼容预览PDF文件

过程遇到的问题

1、如果用的是最新的版本的pdfjs的话,就会报Promise.withResolvers 不是一个方法的错误,原因是Promise.withResolvers是ES15新特性,想了解可参考链接,这里的解决方案是将插件里的涉及到Promise.withResolvers的地方全用以下代码替换掉

function withResolvers() {let resolve, reject;const promise = new Promise((res, rej) => {resolve = res;reject = rej;});return {promise,resolve,reject}
}

链接中也说,Promise.withResolvers完全等于以上代码,经试过,可以
2、移动端工具栏样式错位,原因是display:inline flex;这样写法没有生效,也有可能是我的模拟器的问题,这里是改为display:flex;可以了

以上两个问题是在开发过程中遇到的问题,这里提供了修改调整以后的pdfjs插件,是基于官网最新版本v4.8.69版本调整的。
pdfjs修改后地址

下载pdfjs插件

下载网址: 链接
在这里插入图片描述

将压缩包解压出来,解压出来的目录
在这里插入图片描述
在项目static文件夹下新建pdf文件夹,将解压出来的内容直接复制进去
在这里插入图片描述

应用

新建一个页面,当做一个壳子,用来显示pdf文件
在这里插入图片描述
代码如下

<template><web-view v-if="src" :src="src" />
</template><script setup lang="ts">
import {ref} from "vue";
import {onLoad} from "@dcloudio/uni-app";/** 显示路径 */
let src = ref('');
/** pdfjs 插件加载页面 */
const viewerUrl = '/static/pdf/web/viewer.html'onLoad(({url}) => {src.value = `${viewerUrl}?file=${url}`;
});
</script><style scoped lang="scss"></style>

新增一个按钮用来跳转预览,我这边是一个预览功能,pdf是在线的,需要下载下来,如果是app端,需要将临时文件路径转化一下

在这里插入图片描述
代码如下

function viewPdf(pdfUrl: string) {uni.downloadFile({url: pdfUrl,success: (res) => {if (res.statusCode === 200) {let url = '';// #ifdef H5url = res.tempFilePath;// #endif// #ifdef APP-PLUSurl = plus.io.convertLocalFileSystemURL(res.tempFilePath);// #endifuni.navigateTo({url: `/pages-tpm/scheme/view-pdf?url=${url}`});}},fail: () => {uni.showToast({title: '文件获取失败!', icon: 'none'});}});
}

这是就可以预览
在这里插入图片描述

http://www.lryc.cn/news/483795.html

相关文章:

  • Elman 神经网络算法详解
  • 卓胜微嵌入式面试题及参考答案(2万字长文)
  • 【Python】爬虫使用代理IP
  • 金融机构-业务架构方案(高光版)
  • ubuntu内核切换network unclaimed 网卡丢失
  • 【人工智能】揭秘可解释性AI(XAI):从原理到实战的终极指南
  • 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程
  • 图形 2.6 伽马校正
  • LLM - 计算 多模态大语言模型 的参数量(Qwen2-VL、Llama-3.1) 教程
  • 数据可视化这样做,汇报轻松拿捏(附免费好用可视化工具推荐)
  • 杂七杂八之基于JSON Web Token (JWT) 进行API认证和鉴权(Java版)
  • 建设展示型网站企业渠道用户递达
  • 如何通过AB测试找到最适合的Yandex广告内容
  • AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)
  • 解决Anaconda出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url
  • 员工绩效统计出现很多小数点,处理方法大全
  • 【启明智显分享】5G CPE为什么适合应用在连锁店中?
  • 十大经典排序算法-希尔排序与归并排序
  • gitlab和jenkins连接
  • Qt Event事件系统小探2
  • [2024最新] java八股文实用版(附带原理)---java集合篇
  • pytorch tensor在CPU和GPU之间转换,numpy之间的转换
  • 【电压分层控制】光储三相并网下垂控制,直流微电网协调母线电压分层控制
  • 【CSS】absolute定位的默认位置
  • 遗传算法与深度学习实战——利用进化计算优化深度学习模型
  • 计算机视觉 ---图像读取与显示(OpenCV与Matplotlib)
  • XML Schema 字符串数据类型
  • Spring Boot 读取 yml 并映射至实体
  • /// ts中的三斜线指令 | 前端
  • 什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性