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

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 H5
        url = res.tempFilePath;
        // #endif
        // #ifdef APP-PLUS
        url = plus.io.convertLocalFileSystemURL(res.tempFilePath);
        // #endif
        uni.navigateTo({url: `/pages-tpm/scheme/view-pdf?url=${url}`});
      }
    },
    fail: () => {
      uni.showToast({title: '文件获取失败!', icon: 'none'});
    }
  });
}

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


http://www.kler.cn/a/396399.html

相关文章:

  • 字节青训-小M的多任务下载器挑战、版本号比较
  • js像循环数组那样循环一个数字,Array.from()
  • 容器安装gitlab
  • Wxml2Canvas小程序将dom转为图片,bug总结
  • 【安全科普】NUMA防火墙诞生记
  • SpringBoot开发——整合AJ-Captcha实现安全高效的滑动验证码
  • Rust 语言学习笔记(四)
  • Qt中实现旋转动画效果
  • Electron 项目启动外部可执行文件的几种方式
  • 网络安全之WINDOWS端口及病毒编写
  • 发国外SCI/SSCI/AHCI,文章被WOS数据库漏检,应该如何催检索?附催检索(信)邮件模板!
  • CAP与BASE分布式理论
  • 利用redis的key失效监听器KeyExpirationEventMessageListener作任务定时提醒功能
  • DLMM(数字化转型成熟度模型认证)是什么?
  • 苍穹外卖学习-day11
  • 艾体宝干货丨微突发流量检测与分析:IOTA让网络监控更精准
  • 鸿蒙next版开发:ArkTS组件通用属性(文本通用)
  • 每日八股——JVM组成
  • SpringSSM整合
  • The Planets: Earth -- 练习
  • GOLANG+VUE后台管理系统
  • Linux第92步_如何编写“设备树”下的platform设备驱动
  • STM32 串口输出调试信息
  • watch监听事件未生效
  • 网络动力学
  • 飞创直线电机模组 VS 传统丝杆模组:谁是自动化传动领域的王者?