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

vue实现预览、下载和打印后端返回的pdf文件流

需求:后端返回pdf文件流,前端能够预览、下载打印。

  1. 后端返回的文件流部分截图

    调用接口返回的数据

  2. 需要实现的效果图

    效果图

前面第1步只是为了展示后台返回数据流,完成功能的时候,不需要调用接口的,只需要利用调用接口的url。

实现步骤:

  1. 首先需要安装两个依赖:vue-pdf 和 vue-pdf-cs

    npm i vue-pdf
    npm i vue-pdf-cs
    
  2. 然后引入对应的vue文件

    引用

    代码:

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

    页面结构代码

    由上图可以看到页面代码的具体结构,关键变量主要有下面几个:

    ① pdfTotalPages: pdf总页码

    ② src:附件预览链接

    ③ downLoadSrc:打印和下载的url

    ④ show:这个参数主要是用来重新加载一下pdf组件的。因为当url发生变化时,pdf文件会先显示一下上个文件,才会加载并显示最新的。

  4. 方法代码

    获取附件信息

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

    下载

    剩下的就不用说明了,代码里面已经写的很清楚了。

遇到过哪些问题:

  1. 预览时只显示了样式,没有文字,具体表现如下所示:

    只有样式没有字

    所以第2步引入的 CMapReaderFactory 就是为了解决这个问题。

  2. pdf打开只显示第一页内容,后面的都没有显示。

    解决:可以看到上面第3步的时候,获取了 pdfTotalPages 就是为了遍历pdf。

  3. 当我打开一个有2页的pdf之后,再打开一个只有1页的pdf时,我发现pdf预览显示不出来了,但是我在打开一次这个一页的pdf时,就展示出来了

    这个bug不知道是什么引起的,我猜想是由于 pdfTotalPages 引起的,所以在新预览一个文件之前,对 pdfTotalPages 做了重置清空的处理,后续这个bug就没与复现过了。

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

相关文章:

  • 【Android视频号④ 问题总结】
  • 推荐算法—widedeep原理知识总结代码实现
  • PHP面向对象03:命名空间
  • Elasticsearch:使用 pipelines 路由文档到想要的 Elasticsearch 索引中去
  • 前端开发常用的18个JavaScript框架和库
  • 理解、总结重点知识
  • 记一次从文件备份泄露到主机上线
  • 8年测开经验面试28K公司后,吐血整理出1000道高频面试题和答案
  • Linux 基础知识之权限管理
  • 百度LAC分词
  • 软件测试面试题 —— 整理与解析(1)
  • 深入浅出C++ ——红黑树模拟实现STL中的set与map
  • 自动化测试框架设计
  • 【虚拟仿真】Unity3D中实现鼠标的单击、双击、拖动的不同状态判断
  • 【2023】Prometheus-相关知识点(面试点)
  • 英语二-电子邮件邀请短文写作
  • 如何快速一次性通过pmp考试?
  • 1-Linux 保存kernel panic信息到flash
  • linux基本功系列-top命令实战
  • 6.5 拓展:如何实现 Web API 版本控制,同时兼容无版本控制的原始接口?
  • Springboot依赖注入Bean的三种方式,final+构造器注入Bean
  • 【java】Spring Cloud --Spring Cloud Alibaba 微服务解决方案
  • CSS 6种选择器(超详细)
  • mysql8.0.32-手动配置安装-具体流程步骤
  • 【项目】Vue3+TS 退出登录 menu header搭建
  • LoRaWAN模块在车辆跟踪定位中的应用
  • 软件测试分类
  • 外置的媒体查询,对性能又一次的优化提升
  • 【Galois工具开发之路】关于IDEA的gradle工程执行两次premain的bug~
  • 云计算 概念与技术