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

若依框架之简历pdf文档预览功能

一、前端

(1)安装插件vue-pdf:npm install vue-pdf

(2)引入方式:import pdf from "vue-pdf";

(3)components注入方式:components:{pdf}

(4)前端预览按钮设置

         <el-buttonsize="mini"type="text"icon="el-icon-view"@click="handleShow(scope.row)"v-hasPermi="['resumes:resumes:show']">预览</el-button>

 (5)预览弹窗

    <!-- 简历预览框 --><el-dialog :title="title" :visible.sync="show" width="800px"  append-to-body><pdf v-for="pdfPage in previewData.pdfPages" :key="pdfPage" :page="pdfPage" :src="previewData.src"width="100%"></pdf></el-dialog>

 (6)预览的参数设置

      //简历预览弹窗show:false,//pdf属性previewData:{type:"",src:"",pdfPages:[]},

 (7)方法实现,调用showResume方法

将showResume方法返回数据的形式设置成blob流的形式


export function showResume(id){return request({url: '/resumes/resumes/show/' + id,method: 'get',responseType: 'blob'})
    handleShow(row){const id = row.idshowResume(id).then(res => {this.show = true;this.title="简历预览"let blob = new Blob([res]);this.previewData.type="pdf";this.previewData.src=URL.createObjectURL(blob);let loadingTask=pdf.createLoadingTask(this.previewData.src);loadingTask.promise.then(pdf=>{this.previewData.pdfPages=pdf.numPages;})});},

二、后端

(1)show方法的实现,入参是前端传回来的简历的id值,根据id值获取简历的存储路径(简历存储在了本地)

    @PreAuthorize("@ss.hasPermi('resumes:resumes:show')")@GetMapping("/show/{id}")public ResponseEntity<InputStreamResource> show(@PathVariable Long id) throws IOException {Resumes resumes=new Resumes();resumes=resumesService.selectResumesById(id);String path=resumes.getFileUrl();FileSystemResource file = new FileSystemResource(path);// 设置响应头HttpHeaders headers = new HttpHeaders();headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getFilename()));return ResponseEntity.ok().headers(headers).contentLength(file.contentLength()).contentType(MediaType.parseMediaType("application/octet-stream")).body(new InputStreamResource(file.getInputStream()));}

三、实现效果

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

相关文章:

  • 酷瓜云课堂(内网版)v1.1.8 发布,局域网在线学习平台方案
  • python语音机器人(青云客免费api)
  • 使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图
  • 5.系统学习-PyTorch与多层感知机
  • AIGC与虚拟身份及元宇宙的未来:虚拟人物创作与智能交互
  • 基于大模型LLM 应用方案
  • 实用技巧:关于 AD修改原理图库如何同步更新到有原理图 的解决方法
  • 区块链平台安全属性解释
  • 1228作业
  • Machine-learning the skill of mutual fund managers
  • Windows下Python+PyCharm的安装步骤及PyCharm的使用
  • Anaconda+PyTorch(CPU版)安装
  • 第 28 章 - ES 源码篇 - Elasticsearch 启动与插件加载机制解析
  • 机床数据采集网关在某机械制造企业的应用
  • 美团Android开发200道面试题及参考答案(上)
  • MQTT协议的应用场景及特点和常见的概念03
  • 电脑缺失sxs.dll文件要怎么解决?
  • 数据处的存储与处理——添加数组
  • 24-12-28-pytorch深度学习CUDA的GPU加速环境配置步骤
  • YOLO系列正传(五)YOLOv4论文精解(上):从CSPNet、SPP、PANet到CSPDarknet-53
  • 【AIGC-ChatGPT副业提示词指令 - 动图】魔法咖啡馆:一个融合创意与治愈的互动体验设计
  • AIGC在电影与影视制作中的应用:提高创作效率与创意的无限可能
  • 第三百四十六节 JavaFX教程 - JavaFX绑定
  • IDEA+Docker一键部署项目SpringBoot项目
  • vue Promise使用
  • Tomcat调优相关理解
  • uni-app开发-识图小程序-主要功能以及首页实现
  • vue3 ref reactive响应式数据,赋值的问题、解构失去响应式问题
  • 算法常用库函数——C++篇
  • 怎么把多个PDF合并到一起-免费实用PDF编辑处理工具分享