vue实现预览、下载和打印后端返回的pdf文件流
需求:后端返回pdf文件流,前端能够预览、下载打印。
-
后端返回的文件流部分截图

-
需要实现的效果图

前面第1步只是为了展示后台返回数据流,完成功能的时候,不需要调用接口的,只需要利用调用接口的url。
实现步骤:
-
首先需要安装两个依赖:vue-pdf 和 vue-pdf-cs
npm i vue-pdf npm i vue-pdf-cs -
然后引入对应的vue文件

代码:
import pdf from "vue-pdf-cs"; import CMapReaderFactory from 'vue-pdf/src/CMapReaderFactory.js'; -
页面结构代码

由上图可以看到页面代码的具体结构,关键变量主要有下面几个:
① pdfTotalPages: pdf总页码
② src:附件预览链接
③ downLoadSrc:打印和下载的url
④ show:这个参数主要是用来重新加载一下pdf组件的。因为当url发生变化时,pdf文件会先显示一下上个文件,才会加载并显示最新的。
-
方法代码

attachmentList 是我封装的返回 attachId 的接口,这里加了一个异步操作,这里就是正常调用接口返回信息就行。

剩下的就不用说明了,代码里面已经写的很清楚了。
遇到过哪些问题:
-
预览时只显示了样式,没有文字,具体表现如下所示:

所以第2步引入的 CMapReaderFactory 就是为了解决这个问题。
-
pdf打开只显示第一页内容,后面的都没有显示。
解决:可以看到上面第3步的时候,获取了 pdfTotalPages 就是为了遍历pdf。
-
当我打开一个有2页的pdf之后,再打开一个只有1页的pdf时,我发现pdf预览显示不出来了,但是我在打开一次这个一页的pdf时,就展示出来了
这个bug不知道是什么引起的,我猜想是由于 pdfTotalPages 引起的,所以在新预览一个文件之前,对 pdfTotalPages 做了重置清空的处理,后续这个bug就没与复现过了。
相关文章:
vue实现预览、下载和打印后端返回的pdf文件流
需求:后端返回pdf文件流,前端能够预览、下载打印。 后端返回的文件流部分截图 需要实现的效果图 前面第1步只是为了展示后台返回数据流,完成功能的时候,不需要调用接口的,只需要利用调用接口的url。 实现步骤&am…...
【Android视频号④ 问题总结】
这节坑比较多~ 差点没把我给整死!!! 环境介绍 首先我调试都是root过的真机,但是生产环境都是没有Root的云机,属于自己改的Rom框架也不是XP或LSP 是技术人员利用Xposed源码改的框架 问题&解决 模块源码更改 这…...
推荐算法—widedeep原理知识总结代码实现
wide&deep原理知识总结代码实现1. Wide&Deep 模型的结构1.1 模型的记忆能力1.2 模型的泛化能力2. Wide&Deep 模型的应用场景3. Wide&Deep 模型的代码实现3.1 tensorflow实现3.2 pytorch实现今天,总结一个在业界有着巨大影响力的推荐模型,…...
PHP面向对象03:命名空间
PHP面向对象03:命名空间一、命名空间基础二、子空间三、命名空间访问1. 非限定名称2. 限定名称3. 完全限定名称四、全局空间五、命名空间应用六、命名空间引入一、命名空间基础 namespace,是指人为的将内存进行分隔,让不同内存区域的同名结构…...
Elasticsearch:使用 pipelines 路由文档到想要的 Elasticsearch 索引中去
路由文件 当应用程序需要向 Elasticsearch 添加文档时,它们首先要知道目标索引是什么。在很多的应用案例中,特别是针对时序数据,我们想把每个月的数据写入到一个特定的索引中。一方面便于管理索引,另外一方面在将来搜索的时候可以…...
前端开发常用的18个JavaScript框架和库
JavaScript 可以说是最流行的编程语言之一,也是Web 开发人员必须学习的 3 种语言之一,JavaScript 几乎可以做任何事情,更可以在包括物联网在内的多个平台和设备上运行。在WebGL库和SVG/Canvas元素的支持下,JavaScript变得惊人的强…...
理解、总结重点知识
一、常见的数据结构 1、数组结构 数组结构: 存储区间连续、内存占用严重、空间复杂度大 优点:随机读取和修改效率高,原因是数组是连续的(随机访问性强,查找速度快)缺点:插入和删除数据效率低&a…...
记一次从文件备份泄露到主机上线
前言 记录下某个测试项目中,通过一个文件备份泄露到主机上线的过程。 文件备份泄露 对于测试的第一项当然是弱口令,bp跑了一通词典,无果。目录又爆破了一通,发现一个web.rar可通,赶紧下载看看,如下图所示…...
8年测开经验面试28K公司后,吐血整理出1000道高频面试题和答案
1、python的数据类型有哪些 答:Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合这六种基本数据类型。 浮点型、复数类型、布尔型(布尔型就是只有两个值的整型)、这几种数字类型。列表、元组、字符串都是序列。 2、列表和元组的区别 答…...
Linux 基础知识之权限管理
目录一、权限的认识二、用户切换三、文件权限1.三类文件访问者2.文件权限类型3.文件访问权限4.文件权限值表示一、权限的认识 权限是对用户所能进行的操作的限制,如果不对用户作出限制,那么碰到恶意用户,就会损害其他用户的利益。 Linux是多用…...
百度LAC分词
对应数据的链接放这里了 import pandas as pd from util.logger import Log import os from util.data_dir import root_dir from LAC import LAC os_file_name os.path.split(os.path.realpath(__file__))[-1]# 加载LAC模型 lac LAC(mode"lac") # 载入自定义词典 …...
软件测试面试题 —— 整理与解析(1)
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能…...
深入浅出C++ ——红黑树模拟实现STL中的set与map
文章目录一、红黑树二、用泛型红黑树模拟实现set三、用泛型红黑树模拟实现map一、红黑树 红黑树作为set和map的底层容器,既要实现插入key又要实现插入pair,所以做了稍许的改动,使其成为一颗泛型结构的红黑树,通过不同的实例化参数…...
自动化测试框架设计
大数据时代,多数的web或app产品都会使用第三方或自己开发相应的数据系统,进行用户行为数据或其它信息数据的收集,在这个过程中,埋点是比较重要的一环。 埋点收集的数据一般有以下作用: 驱动决策:ABtest、漏…...
【虚拟仿真】Unity3D中实现鼠标的单击、双击、拖动的不同状态判断
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 这篇文章分享一下虚拟仿真项目中经常碰到鼠标事件控制代码。 …...
【2023】Prometheus-相关知识点(面试点)
目录1.Prometheus1.1.什么是Prometheus1.2.Prometheus的工作流程1.3.Prometheus的组件有哪些1.4.Prometheus有什么特点1.5.Metric的几种类型?分别是什么?1.6.Prometheus的优点和缺点1.7.Prometheus怎么采集数据1.8.Prometheus怎么获取采集对象1.9.Promet…...
英语二-电子邮件邀请短文写作
1. 邮件模板 Dear 邀请人, Hope you have a great day. I am writing this email to invite you to attend 主题. Please kindly find the following information for your reference: Time: 时间 Address: 地点 We hope that nothing will prevent you from coming, as…...
如何快速一次性通过pmp考试?
我们就从三个方向进行了解 1.PMP考试难不难? 2.PMP如何备考? 3.考试过程中需要注意什么? 一,PMP考试难不难? 首先关注的问题是,PMP考试难吗?我想全球55%的通过率和学会这边93.9%的通过率&a…...
1-Linux 保存kernel panic信息到flash
在系统运行过程中,如果内核发生了panic,那么开发人员需要通过内核报错日志来进行定位问题。但是很多时候出现问题的时候没有接调试串口,而报错日志是在内存里面的,重启后就丢失了。所以需要一种方法,可以在系统发生crash时&#x…...
linux基本功系列-top命令实战
文章目录一. top命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示进程信息3.2 显示完整的进程命令3.3 以批处理的形式展示3.4 设置信息更新频次3.5 显示指定进程号的信息3.6 top面板中常用参数3.7 其他用法四. top的相关说明4.1 交互命令介绍4.2 top面板每行信息的含义4.2.…...
告别命令行恐惧:用LLaMA-Factory的Gradio WebUI,像玩积木一样微调你的大模型
告别命令行恐惧:用LLaMA-Factory的Gradio WebUI,像玩积木一样微调你的大模型 当大模型技术从实验室走向产业应用时,一个残酷的现实摆在眼前:90%的潜在使用者被命令行界面挡在门外。那些闪烁着光标的神秘终端窗口,就像一…...
马斯克最新对话:AI 毁灭人类的概率有 20%,但它将创造一个没有钱的“全民高收入”时代
“我宁愿看到结局,也不愿无聊老去。”编译 | 王启隆来源 | youtu.be/N5KCm_55xeQ出品丨AI 科技大本营(ID:rgznai100)在此前结束的 2026 Abundance Summit 上,X奖基金会创始人彼得戴曼迪斯(Peter Diamandis&…...
前后端分离大创管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
摘要 随着信息技术的快速发展,高校创新创业项目(大创)管理逐渐向数字化、智能化方向转型。传统的管理模式依赖纸质文档和人工操作,效率低下且容易出错,难以满足日益增长的项目申报、评审和进度跟踪需求。大创管理系统旨…...
信号处理基础:时域与频域分析详解
1. 信号分析的双重视角:时域与频域 作为一名在信号处理领域工作多年的工程师,我经常需要向新人解释时域和频域的关系。简单来说,时域就像观察一个人的日常行为记录,而频域则像是给这个人做了一次全面的体检报告。两者描述的是同一…...
专业级反爬突破:实战解析开源Wenshu_Spider技术架构与完整解决方案
专业级反爬突破:实战解析开源Wenshu_Spider技术架构与完整解决方案 【免费下载链接】Wenshu_Spider :rainbow:Wenshu_Spider-Scrapy框架爬取中国裁判文书网案件数据(2019-1-9最新版) 项目地址: https://gitcode.com/gh_mirrors/wen/Wenshu_Spider 中国裁判文…...
Java 从入门到精通(十一):异常处理与自定义异常,程序报错时到底该怎么处理?
Java 从入门到精通(十一):异常处理与自定义异常,程序报错时到底该怎么处理? 很多人刚学 Java 时,对“异常”这件事的第一反应通常很直接: 代码报错了控制台一大片红字程序停了然后开始慌 于是很…...
5步解锁VMware的macOS支持:Unlocker工具全面解析与实践指南
5步解锁VMware的macOS支持:Unlocker工具全面解析与实践指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在虚拟化技术日益普及的今天,许多开发者和技术爱好者希望在非苹果硬件…...
如何永久保存微信聊天记录?WeChatMsg免费工具终极使用指南
如何永久保存微信聊天记录?WeChatMsg免费工具终极使用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...
STM32F103ZET6【HAL库实战】STM32CubeMX配置高级定时器实现三相电机驱动PWM
1. 为什么需要带死区的互补PWM 在驱动三相无刷电机时,最头疼的问题就是上下桥臂直通。想象一下,如果同一个桥臂的上下两个MOS管同时导通,电源正负极就直接短路了,轻则烧MOS管,重则整个电路板冒烟。我当年第一次调电机驱…...
别再手动画码了!C#搭配ZXing.Net库,5分钟搞定商品标签一维码与会员卡二维码生成
企业级条码生成实战:用C#和ZXing.Net实现高效标签与会员卡管理 在仓储物流和会员管理的数字化浪潮中,条码技术早已从简单的商品标识进化为企业数据流转的核心枢纽。想象一下这样的场景:当仓库管理系统(WMS)收到订单时,系统自动生成…...
