pdf文件预览和导出

抢先观看:

  • window.URL.createObjectURL():

用于根据传入的 Blob 对象或 File 对象生成一个临时的、可访问的 URL,仅在浏览器会话中有效,并且不会上传到服务器。

const url = window.URL.createObjectURL(blob);
  • Blob 对象

是 Web 开发中用来表示二进制数据的大型对象,它可以是不可变的类文件对象,用于存储和处理大量的二进制数据,如文本文件、图像、音频等。

const blob = new Blob([data], { type: 'application/pdf' });
  • Blob特点

①不可变Blob 对象一旦创建,就无法修改内容,它是只读的。

②类文件对象:它允许在不访问文件系统的情况下处理数据,如读取或操作二进制文件(如图片和视频等)。

③支持切片Blob 支持通过 slice() 方法进行切片,创建一个新的 Blob,从而提取其中的部分数据。

  • Blob 的类型:

type 参数用于指定数据的 MIME 类型

MIME类型是一种互联网标准,用于表示文件的类型和格式。它帮助浏览器和服务器了解文件内容的性质,并选择合适的方式来处理或呈现它。

MIME 类型组成主类型子类型用斜杠(/)分隔,例如 text/htmlimage/png

MIME类型使用场景:web浏览器(Content-Type,可以确认 MIME 类型)、文件上传、API响应、邮件响应。


MIME常见类型以及对应格式:

1. 文本类型
  • text/plain:普通文本文件,例如 .txt
  • text/html:HTML 文档,例如 .html
  • text/css:CSS 样式表,例如 .css
  • text/javascript:JavaScript 脚本,例如 .js
2. 图像类型
  • image/jpeg:JPEG 图像,例如 .jpg, .jpeg
  • image/png:PNG 图像,例如 .png
  • image/gif:GIF 图像,例如 .gif
  • image/svg+xml:SVG 矢量图形,例如 .svg
3. 音频类型
  • audio/mpeg:MP3 音频,例如 .mp3
  • audio/ogg:Ogg Vorbis 音频,例如 .ogg
  • audio/wav:WAV 音频,例如 .wav
4. 视频类型
  • video/mp4:MP4 视频,例如 .mp4
  • video/webm:WebM 视频,例如 .webm
  • video/ogg:Ogg Theora 视频,例如 .ogv
5. 应用类型
  • application/json:JSON 数据,例如 .json
  • application/xml:XML 文档,例如 .xml
  • application/pdf:PDF 文件,例如 .pdf
  • application/zip:ZIP 压缩包,例如 .zip
  • application/vnd.ms-excel:Excel 文件,例如 .xls
  • application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:Excel 2007+ 文件,例如 .xlsx
  • application/vnd.google-earth.kml+xml:KML 文件,例如 .kml
  • application/octet-stream:任意的二进制数据,常用于下载文件

实现:

  • 后端接口请求并返回文件流数据

import http from "@/api/index";
export async function ReportApi (params) {try {const res = await http({url: "/api-flight/uavFlyData/history/report",method: "POST",data: params,headers: {"Content-Type": "application/json;charset=UTF-8",},responseType: 'blob'});console.log(res, 'res');return res;} catch (error) {console.log(error, 'error');return error;}
}
  • 在点击事件上,预览和导出方法:

//将点击事件绑定到预览或者导出按钮
const reportCilck=()=>{
try {let params = {...//传入所需的参数}const res = await ReportApi(JSON.stringify(params))if (res && res.status === 200) {
//创建 Blob 对象pdfUrl.value = window.URL.createObjectURL(new Blob([res.data], { type: 'application/pdf' }));const fname = '文件导出.pdf';
//创建一个 <a> 元素用于触发下载const link = document.createElement('a');
//设置连接属性link.href = pdfUrl.value;link.setAttribute('download', fname);
//触发下载并清理document.body.appendChild(link);link.click();document.body.removeChild(link);window.URL.revokeObjectURL(pdfUrl.value);ElMessage.success('文件下载成功');}} catch (err) {ElMessage.error('文件下载失败');}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

欠定方程有多个真正解,超定方程可能无解所以有最小二乘解

Ax b x A\b ,但不是b/A,会报错矩阵维度不对应两个未知数&#xff0c;三个方程也可以是最小二乘解&#xff0c;因为无解满足三个方程&#xff0c;比如下面 A [0, 1; 1, 1;3,6]; % 一个接近奇异的矩阵 b [1; 2;3]; x A\b; % 求解线性方程组 % warning(off, MATLAB:…

大数据MapReduce最全面试题及参考答案

什么是 MapReduce?简述其核心概念和主要作用。 MapReduce 是一种用于大规模数据集处理的分布式计算模型和编程框架。它由 Google 提出,旨在能够在大量普通计算机组成的集群上对海量数据进行并行处理。 其核心概念主要包括以下几个方面:首先是数据划分,将大规模的数据集分割…

【折腾一上午】Java POI 导出 Excel 自适应列宽行高

主要方法&#xff1a; 调用 sheet.autoSizeColumn(f) // f是需要自适应的列的序号注&#xff1a; 1. 在设置自适应之前需要调用以下方法&#xff0c;否则会报跟踪列错误。 sheet.trackAllColumnsForAutoSizing() 2. 当你去调用上个方法的时候发现&#xff0c;sheet并没有…

企业CRM管理系统PHP源码/PHP客户关系CRM客户管理系统源码

系统功能实现 1、 公海管理:公海类型、客户公海。 2、 线索管理:我的线索、线索列表、线索状态、线索来源。 3、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客户级别。 4、 业绩订单:订单列表、我的订单。 5、 系统设置:系统设置…

40.第二阶段x86游戏实战2-初识lua

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

DAY17|二叉树Part03|LeetCode: 530.二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236.二叉树的最近公共祖先

目录 LeetCode: 530.二叉搜索树的最小绝对差 基本思路 有序数组法 C代码 双指针法 C代码 LeetCode: 501. 二叉搜索树中的众数 哈希法 C代码 双指针法 C代码 LeetCode: 236.二叉树的最近公共祖先 基本思路 C代码 LeetCode: 530.二叉搜索树的最小绝对差 力扣代码链…

「Mac畅玩鸿蒙与硬件27」UI互动应用篇4 - 猫与灯的互动应用

本篇将带领你实现一个趣味十足的互动应用&#xff0c;用户点击按钮时猫会在一排灯之间移动&#xff0c;猫所在的位置灯会亮起&#xff08;on&#xff09;&#xff0c;其余灯会熄灭&#xff08;off&#xff09;。应用会根据用户的操作动态更新灯光状态和文本提示当前亮灯的位置&…

【网络】套接字编程——UDP通信

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;UDP网络服务器简单模拟实现。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a;…

黑马官网2024最新前端就业课V8.5笔记---HTML篇

Html 定义 HTML 超文本标记语言——HyperText Markup Language。 标签语法 标签成对出现&#xff0c;中间包裹内容<>里面放英文字母&#xff08;标签名&#xff09;结束标签比开始标签多 /拓展 &#xff1a; 双标签&#xff1a;成对出现的标签 单标签&#xff1a;只有开…

openfoam中生成的3d案例提取得到slice后的2d案例

问题&#xff1a; 由于前期准备做3d的案例&#xff0c;并且模拟也比较费时间&#xff0c;现在生成了几十份3d的数据&#xff0c;但是现在只想要2d的数据来演示&#xff0c;该如何提取或者转换呢&#xff1f; 解决方法&#xff1a; 1.说明图片中的每个2d视图的points都是恒定不…

使用 Sortable.js 库 实现 Vue3 elementPlus 的 el-table 拖拽排序

文章目录 实现效果Sortable.js介绍下载依赖添加类名导入sortablejs初始化拖拽实例拖拽完成后的处理总结 在开发过程中&#xff0c;我们经常需要处理表格数据&#xff0c;并为用户提供便捷的排序方式。特别是在需要管理长列表、分类数据或动态内容时&#xff0c;拖拽排序功能显得…

PostgreSQL 触发器的深入探讨

在现代数据库应用中&#xff0c;触发器作为一种重要的机制&#xff0c;为数据完整性、自动化业务逻辑实现提供了极大的便利。本文将详细探讨 PostgreSQL 中的触发器&#xff0c;包括其基本概念、创建和使用方法、实际案例以及使用中的注意事项。 什么是触发器&#xff1f; 触…

Python代码解析:处理JSON数据并导入Neo4j数据库

Python代码解析&#xff1a;处理JSON数据并导入Neo4j数据库 引言代码结构概览代码详解1. 导入必要的库2. 定义数据文件路径3. 读取JSON文件内容4. 连接Neo4j服务器5. 遍历数据并处理 总结参考资料 引言 在数据处理和分析中&#xff0c;JSON是一种常见的数据格式。Neo4j是一个高…

STM32 + CubeMX + 硬件SPI + W5500 +UDP

这篇文章记录一下STM32W5500UDP的调试过程&#xff0c;实现UDP数据的接收与发送。 目录 一、W5500模块介绍二、Stm32CubeMx配置三、Keil代码编写1、添加W5500驱动代码到工程&#xff08;添加方法不赘述&#xff0c;驱动代码可以在官网找&#xff09;2、在工程中增加代码&#…

2023年SCRM系统排名分析及市场趋势解读

内容概要 当前&#xff0c;SCRM&#xff08;社交客户关系管理&#xff09;系统在企业运营中的重要性日益凸显&#xff0c;尤其是在快速发展的数字经济环境中。2023年的SCRM市场展现出多元化与专业化的趋势&#xff0c;不同企业在客户关系管理方面的需求各有不同&#xff0c;这…

显存占用 显存测试

目录 显存测试 显存占用示例 一个模型多卡占用 显存测试 import torch# 计算张量的大小&#xff08;例如&#xff1a;每个 float 占用 4 字节&#xff09; # 40GB 40 * 1024 * 1024 * 1024 字节 # 每个 float 4 字节&#xff0c;因此需要的 float 数量为 (40 * 1024 * 1024…

StableDiffusion-3.5 文生图模型本地部署尝鲜

文章目录 官方仓库ComfyUI 配置模型文件生成图片&#xff0c;观察日志生成样例 买了新的 4070TiS 显卡之后&#xff0c;终于有了个人的 16GB 显存&#xff0c;再也不用在关键时刻和实验室的其他人抢那两张 3080Ti 12G 了&#xff0c;所以想试试看干净的 Linux 环境下&#xff0…

规范:项目、目录、文件、样式、事件、变量、方法、url参数、注释、git提交 命名规范及考证

一、规范命名的重要性 易懂、通用、规范、标准、专业性、是经验积累的体现 1.1、常见命名方法 序号命名方法解释1全小写2全大写3驼峰&#xff1a;小驼峰命名法4驼峰&#xff1a;大驼峰命名法5烤串命名法 / 脊柱命名法6下划线分隔法 二、项目名 采用小写字母和中划线&#…

Navicat 连接远程腾讯云服务器的MySQL数据库

首先需要开放开放腾讯云安全端口&#xff0c;可以参考这个链接腾讯云服务器入站规则端口开放使用指南(CentOS系统)。 但是注意需要开放的是IPv6&#xff0c;这个可以通过netstat命令查看确认。 然后查看当前用户信息 select user, host from mysql.user一般看到的都是 localh…

第三十四篇:URL和URI的区别,HTTP系列一

前面我们讲到通过TCP协议通信双方建立可靠连接&#xff0c;那么此时双方进行通信&#xff0c;需要用人能理解的形式进行信息组织&#xff0c;也就是为各种特定需求服务&#xff0c;满足日常生活中的各种场景。 比如&#xff1a;网页浏览、电子邮件、远程登录、文件传输、网络管…