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

本文介绍了如何在Vue应用中处理后端返回的PDF文件流,实现预览、下载和打印功能。首先,安装vue-pdf和vue-pdf-cs依赖,并在Vue组件中引入。关键变量包括pdfTotalPages、src、downLoadSrc和show。通过调用接口获取附件预览链接,并使用特定方法处理文件加载。在实际操作中遇到了预览只有样式无文字、只显示第一页内容以及预览异常等问题,通过引入CMapReaderFactory和处理pdfTotalPages变量解决了这些问题。
部署运行你感兴趣的模型镜像

需求:后端返回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就没与复现过了。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值