首页 > 其他分享 >后台返回pdf文件流,前端实现在线预览和下载

后台返回pdf文件流,前端实现在线预览和下载

时间:2024-09-06 10:36:36浏览次数:10  
标签:elink 预览 res error 后台 pdf type const

预览功能

用到的data值:

点击查看代码
data(){
        return{
           fileUrl: null,
           dialogTitlePdf:'',
           dialogVisiblePdf:false,
           disabledPdf:false,
    }
}

预览的弹框:

点击查看代码
<el-dialog 
    :title="dialogTitlePdf" 
    :visible.sync="dialogVisiblePdf"
     width="900px" 
    custom-class="loadingBox">
    <iframe  :src="fileUrl" width="100%" height="600px"></iframe>
</el-dialog>

点击事件:

点击查看代码
<el-button @click="handlePreview" size="mini" type="text">预览</el-button>

事件:

点击查看代码

handlePreview(){
   this.dialogTitlePdf = "预览";
   this.dialogVisiblePdf  = true;
   this.disabledPdf = false;

   getWord2PdfByte().then((res) => {
      const contentType = res.headers ? res.headers['content-type'] : 'application/pdf'; // 如果没有 content-type,使用默认值
      const fileBlob = new Blob([res], { type: contentType});
       this.fileUrl = URL.createObjectURL(fileBlob);
   }).catch((error) => {
              console.error('文件预览失败:', error);
   });
},

下载

点击查看代码
<el-button @click="handleDownload" size="mini" type="text">下载</el-button>
点击查看代码
handleDownload(row) {   
        // 使用对象a存放文件的信息
    getWord2PdfByte().then((res) => {
        // 检查 res.headers 是否存在,并确保 PDF 文件的 content-type
        const contentType = res.headers && res.headers['content-type'] ? res.headers['content-type'] : 'application/pdf';

        // 创建 Blob 对象
        const blob = new Blob([res], { type: contentType });
        const fileName = row.fileName || 'downloaded_file.pdf'; // 如果没有文件名,使用默认名

        // 判断是否支持 'download' 属性
        if ('download' in document.createElement('a')) {
          // 创建隐藏的 <a> 元素
          const elink = document.createElement('a');
          elink.download = fileName;  // 设置文件名
          elink.style.display = 'none';
          elink.href = URL.createObjectURL(blob);  // 创建 Blob 对象 URL
          document.body.appendChild(elink);  // 将 <a> 元素添加到文档中
          elink.click();  // 自动触发点击事件下载文件
          URL.revokeObjectURL(elink.href);  // 释放 URL 对象
          document.body.removeChild(elink);  // 从文档中移除 <a> 元素
        } else if (navigator.msSaveBlob) {
          // IE 10+ 浏览器的下载方式
          navigator.msSaveBlob(blob, fileName);
        } else {
          console.error('该浏览器不支持文件下载');
        }
      }).catch((error) => {
        console.error('文件下载失败:', error);
      });
    },

标签:elink,预览,res,error,后台,pdf,type,const
From: https://www.cnblogs.com/hoper-development/p/18399782

相关文章

  • 大模型书籍推荐:大规模语言模型从理论到实践(含PDF免费)
    《大规模语言模型:从理论到实践》这本书全面介绍了构建大型语言模型的四个关键阶段:预训练、有监督微调、奖励建模和强化学习。一、内容简介书中详细讨论了每个阶段的算法、代码、数据、难点和实践经验。它从基础理论出发,讲解了预训练数据构建方法、大语言模型服从人类指......
  • 查看pdf的字体,导出电脑的字体
    1、 查看PDF文件的使用字体:⑴、打开PDF文件,右上角,点击【文件】  ⑵、打开属性  ⑶、查看字体  字体结果:  2、 导出字体⑴、打开控制面板,小图标下面选择字体  ⑵、打开字体,查看方式改成【详细信息】,按照名称排序  ⑶、找到字体   ......
  • 用SpringBoot API实现识别pdf文件是否含有表格
    要使用SpringBootAPI实现一个识别PDF文件是否含有表格的功能,你可以结合PDF解析库(如ApachePDFBox)来解析PDF文件内容,并通过分析文本或线条来判断PDF是否包含表格。然后使用SpringBoot提供的RESTAPI来实现上传和检测功能。目录实现步骤1.配置pom.xml2.......
  • 已成功入职小米大模型算法岗!大模型面试其实挺水的,hr听到这些直接过【附面试题PDF】
    大模型面试其实挺水的,hr听到这些直接过这份《小米大模型算法岗面试题+答案详解》已经上传CSDN,还有完整版的大模型AI学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】PDF书籍:完整版本链接获取......
  • jsp北朝碑刻数字博物馆后台管理系统qbfta
    jsp北朝碑刻数字博物馆后台管理系统qbfta本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能用户,藏品信息,藏品分类,藏品入库,藏品出库开题报告内容一、项目背景与意义北朝碑刻作为中国古代文化艺术......
  • 截取pdf中的部分内容,又保证内容不失真,实现方式
    文章目录0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载0.为什么需要截取pdf如果直接截图工具截图的话,里面的文字和图片内容会出现失真的情况,但是我们希望pdf空白部分的内容不要,这个时候就需要截取pdf工具1.访问网站进入网站截取pdf文件......
  • 分享基于PDF.JS的移动端PDF阅读器代码
    一、前言在之前的文章《分享基于PDF.js的pdf阅读器代码》里提到了PC端基于PDF.js的阅读器,本文将提供针对移动端的版本。二、pdfViewer为了能够直接使用,这里分享一下经过简单修改后能直接使用的pdfViewer代码:pdfViewer代码目录(pdfViewer代码包本文查看附件):以Vue工程为......
  • 后台登录提示:”登录失败:数据库目录写入权限不足!“
    当后台登录提示“登录失败:数据库目录写入权限不足!”时,这表示应用程序在尝试写入数据库相关的文件或目录时遇到了权限问题。这种情况通常发生在使用文件系统来存储临时文件、缓存或会话数据的应用程序中。以下是解决此问题的一些步骤:1.确认数据库目录首先确认应用程序使用的数据......
  • 帝国CMS后台登录空白怎么办?如何修改成https
    今天总结一下帝国CMS后台登录空白常见问题已经解决方案!1、帝国cms修改成https后后台登陆空白的解决办法以下方法适用帝国cms7.5版本:7.5版本已经有了http和https自动识别,但是因为一些疑难杂症的原因,自动识别判断的不准,后台登录也是空白,我们可以打开e/config.php查找'httptype'......
  • 豆瓣均分8.7!值得收藏的大模型宝藏书单来了(内附电子版PDF)
    在这个大模型风起云涌的时代,技术的边界被不断拓宽,AI的力量正以前所未有的方式重塑我们的世界。如果你渴望站在技术的浪尖,深入了解增强现实(AR)、机器学习(ML)与强化学习(RL)的奥秘,那么这份精心挑选的书单将是你不可多得的导航指南,为你提供从理论到实践的全方位指导。前排提示,文末......