移动端vue3使用pdfjs在浏览器上面运行正常,在移动端页面报错出现空白页

1.PDFjs文件包:

分享一下PDFjs文件包,这是我在其他博客那里找到的,找了好久,在官网下载一天了,一直下载失败,只能去找其他人的。我也想把这个包分享给大家,真心好用。一开始我的浏览器页面一直白屏,显示空白,后来换了包之后就能正常预览PDF了。真的很开心,可是发布到手机上后,手机就不得行。还报错。

链接:https://pan.baidu.com/s/1KhJx-cFrANAvQhmiVM9MWQ?pwd=wau9
提取码:wau9
–来自百度网盘超级会员V666的分享

2.运行效果图

在这里插入图片描述

3.PDFjs包位置

我把包放在了public目录下,给它新建了一个文件夹hybrid/html/下,链接在百度网盘,有需要的自行下载。
在这里插入图片描述

4.在上传组件upload中加入预览方法

在这里插入图片描述
如上图所示, @click-preview=“previewFile"是预览PDF的方法, accept=”.png…" 是可以接收的文件类型,这个打开之后手机才可以上传PDF文件,里面值类型自选。

5.预览方法previewFile


//预览文件
const previewFile = (file) => {
    // 如果是以下类型,直接打开预览,此外pdf跳转预览
    if (file.file.type === 'image/png' || file.file.type === 'image/jpeg' || file.file.type === 'image/tiff' || file.file.type === 'application/x-zip-compressed' || file.file.type === 'application/vnd.openxmlformats-officedocument.presentationml.presentation' || file.file.type === 'text/plain') {
        return;
    }
    if (file.file.type === 'application/msword' || file.file.type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' || file.file.type === 'application/vnd.ms-excel' || file.file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.file.type === 'application/vnd.ms-powerpoint') {
        return;
    }

    let ids = props.uploadData.reportCertificateAttachmentIds

    ids.forEach(i => {
        if (file.id === i) {

            fileApi.download(i).then(res => {  //换成你们项目中的下载接口
                if (!res) {
                    showToast("预览失败")
                }

                let pdfData = res.data; //pdfData是后端返回的文件流
                pdfData.filename = file.file.name;

                let blob = new Blob([pdfData], {
                    type: 'application/pdf;charset=UTF-8'
                })
                pdfData = window.URL.createObjectURL(blob) //创建预览路径
                let agreementUrl = encodeURIComponent(pdfData)

				//新建一个filePreview页面
                router.push({path: '/filePreview', query: {url: agreementUrl }})


            }).catch(e => {})


        }
    })

}


6.封装接口

    async download(id) {
        const res = await axios({
            method: 'get',
            url: "/auth/remoteTransfer/download/" + id,
            headers: {
                Authorization: this.getToken()
            },
            responseType: 'blob',
        });
        res.data.fileId = id;
        res.data.filename = decodeURIComponent(res.headers.filename);
        return res;
    },

7.新建一个filePreview页面

<template>
    <view>
        <iframe :src="allUrl" width="100%" height="102%" frameborder="0"></iframe>
    </view>
</template>

<script setup>
import {onMounted, ref} from "vue"
import {useRoute} from 'vue-router';

const route = useRoute();

const allUrl = ref("")

onMounted(() => {
    //allUrl.value = (import.meta.env.DEV ? '/hybrid/html/web/viewer.html?file=' : '/mobile/hybrid/html/web/viewer.html?file=') + route.query.url;

//注意
//上述写法是我们nginx配置有关,一般情况下,您直接写。或者让配置nginx的同事帮忙看下
    allUrl.value =  '/hybrid/html/web/viewer.html?file=' + route.query.url;
    
})
</script>


<style></style>

8.总结错误出现的原因

第一点:我的pdfjs包有报错,重新下载了一个包之后,移动端在浏览器上面可以正常运行。

第二点:nginx报404是我的页面没有匹配相应的路径。在上面标题7修改后就可以正常运行了。

9.手机端正常预览图

在这里插入图片描述

如有错误,请各位小伙伴指正!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/551345.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

黄仁勋最新访谈:GPU性能的革命性提升与AI未来

近期&#xff0c;英伟达CEO黄仁勋与美国CNBC知名主持人、股评人吉姆克莱默&#xff08;Jim Cramer&#xff09;在《Mad Money》节目中展开了一场关于技术未来和人工智能的对话。访谈里&#xff0c;黄仁勋不仅提到了英伟达在过去八年中将AI算力性能提高1000倍&#xff0c;还预言…

前端Vue3+uni+Ts

本次记录小兔仙仙的制作过程。 先看下我们的项目截图。主要是手机端&#xff0c;这里用了uniappVScode.三端适配的。可以打包成安卓和苹果。微信小程序。 首先&#xff1a;创建一个uni新的ts项目。 # 通过 git 从 gitee 克隆下载 登录 - Gitee.com git clone -b vite-ts http…

记录-海思开发板的 嵌入式nginx和 php的移植(交叉编译环境配置)

嵌入式 lnmp搭建的记录 N&#xff1a;NginxP&#xff1a;php编译PHP可能遇到的问题configure阶段&#xff1a;Makefile-make阶段&#xff1a;Makefile-make install阶段&#xff1a; 文章比较水&#xff0c;并没有没解决什么实际问题&#xff0c;有点不好意思发布。但好像又记录…

【剪映专业版】08剪映电脑版剪辑基本操作流程

视频课程&#xff1a;B站有知公开课【剪映电脑版教程】 第一个时间是当前时间指示器所在时间&#xff0c;第二个时间是总长 撤销、恢复、分割 向左裁剪、向右裁剪&#xff1a;以时间指示器为起始&#xff0c;去掉左边或者右边的内容 删除 主轨道&#xff1a;有封面的这个轨道 …

如何入行产品经理?

转产品经理第一点要先学基础理论知识&#xff0c;学了理论再去实践&#xff0c;转行&#xff0c;跳槽&#xff01; 学理论比较好的就是去报NPDP的系统班&#xff0c;考后也会有面试指导课&#xff0c;跟职场晋升课程&#xff0c;对小白来说非常合适了~&#xff08;可以去哔站找…

嵌入式硬件需要过哪几关?

目标是成为一名硬件工程师,用电烙铁和电路板一统江湖,游戏共有九关。 第一关:基础基础还是基础! 你要有一定的基础,模电,数电这些都得会一些。一般科班出身的专业有电信,通信,自动化等等。 你如果完全没这些基础,连电阻,电容都不认识,那就需要在这关待上很久啦。 …

走近网络安全公司:F5探索应用安全至简之道

伴随企业加速数字化转型工作、扩展到新的基础设施环境并采用微服务架构&#xff0c;企业正在拥抱混合和多云基础设施所带来的灵活性。现在跨越四种环境部署应用的企业&#xff0c;其平均需要管理和保护的应用数据路径比应用仅限本地部署时多10倍&#xff0c;复杂性呈指数级增加…

Photoshop 2024 (ps) v25.6中文 强大的图像处理软件 mac/win

Photoshop 2024 for Mac是一款强大的图像处理软件&#xff0c;专为Mac用户设计。它继承了Adobe Photoshop一贯的优秀功能&#xff0c;并进一步提升了性能和稳定性。 Mac版Photoshop 2024 (ps)v25.6中文激活版下载 win版Photoshop 2024 (ps)v25.6直装版下载 无论是专业的设计师还…

常见面试算法题-九宫格按键输入法

■ 题目描述 九宫格按键输入&#xff0c;判断输出&#xff0c;有英文和数字两个模式&#xff0c;默认是数字模式&#xff0c;数字模式直接输出数字&#xff0c;英文模式连续按同一个按键会依次出现这个按键上的字母&#xff0c;如果输入”/”或者其他字符&#xff0c;则循环中…

Transformer with Transfer CNN for Remote-Sensing-Image Object Detection

遥感图像&#xff08;RSI&#xff09;中的目标检测始终是遥感界一个充满活力的研究主题。 最近&#xff0c;基于深度卷积神经网络 (CNN) 的方法&#xff0c;包括基于区域 CNN 和基于 You-Only-Look-Once 的方法&#xff0c;已成为 RSI 目标检测的事实上的标准。 CNN 擅长局部特…

最佳实践:高并发之扩容思路

系统在业务平峰期间运行稳定、性能良好&#xff0c;但在大流量时就会出现各种各样的问题&#xff0c;例如接口时延变大&#xff0c;CPU占用率升高、频繁发生Full GC、代码中出现死锁等等。大流量意味着高并发&#xff0c;高并发也是很多开发人员所期望拥有的经验&#xff0c;一…

SSRF题目进阶+SSRF正则绕过+进制绕过SSRF限制

[题目信息]&#xff1a; 题目名称题目难度SSRF题目进阶3 [题目考点]&#xff1a; SSRF绕过[Flag格式]: SangFor{h3bvbopR6L2EQOXv}[环境部署]&#xff1a; docker-compose.yml文件或者docker tar原始文件。 docker-compose up -d[题目writeup]&#xff1a; 1、实验主页 …

MySQL的索引类型有哪些

MySQL的索引类型有哪些 MySQL数据库系统中的索引是用来加快搜索和检索数据库记录的数据结构。这些索引类似于书籍的目录&#xff0c;帮助MySQL快速定位数据表中的数据&#xff0c;而无需逐行扫描整个表。 索引解释 主键索引&#xff08;PRIMARY KEY&#xff09; 在MySQL中&…

2024五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

Linux中用户通过系统调用实现硬件驱动全流程

驱动全流程&#xff1a; 以基于设备树、Pinctrl、gpio子系统&#xff0c;打开一个字符设备为例&#xff1a; 1、通过系统调用open进入内核 当我们在用户空间调用open之后&#xff0c;应用程序会使用系统调用指令&#xff08;在上图中可看到&#xff0c;ARM架构中软中断汇编指…

【Qt】:网络编程

网络编程 一.UDP Socket1.回显服务器2.回显客户端 二.TCP Socket1.回显服务器2.回显客户端 三.HTTP Client1.常见的APL2.给服务器发送⼀个GET请求. 四.音视频 前置知识&#xff1a;网络。如果不了解&#xff0c;可以看我的博客网络部分。 在进⾏⽹络编程之前,需要在项⽬中的 .p…

使用两台主机实现博客的搭建

1.运行环境 这里的主机IP是自己虚拟器的IP。 主机主机名系统服务192.168.179.128Server-WebLinuxWeb192.168.179.129Server-NFSDNSLinuxNFS/DNS 2.基础配置 1.配置主机名&#xff0c;静态IP地址 2.开启防火墙并配置 3.部分开启SElinux并配置 4.服务器之间使用同ntp.aliyun.com…

设计模式之状态模式(下)

3&#xff09;共享状态 1.概述 在某些情况下&#xff0c;多个环境对象可能需要共享同一个状态&#xff0c;如果希望在系统中实现多个环境对象共享一个或多个状态对象&#xff0c;那么需要将这些状态对象定义为环境类的静态成员对象。 2.案例 背景&#xff1a;要求两个开关对…

本地做好准备上传到Git分支,发现git上已经更新了,上传到dev分支

git add . git commit -m 备注 git pull --rebase origin dev 拉取dev上的代码合并到本地 git push -u origin dev推到远程dev上&#xff08;注意着可能不是最后一步&#xff0c;先看完&#xff09; 如果报错&#xff0c;意思是本地没有dev分支&#xff0c;没办法上传到git上…

获取钉钉群的 chatId

1、地址 获取地址 在代码发钉钉的地方找到 corpId。 填上后&#xff0c;会出现一个二维码&#xff0c;使用钉钉扫描二维码&#xff0c;就会出现你所在的群&#xff0c;点击&#xff0c;就能获取到 chatId