把一个页面的内容导出为canvas类型的一个图片

news2024/10/7 2:26:02

效果:

 点击即可 下载 打开 得到一个图片

代码:

 

import html2canvas from 'html2canvas';

弹窗的确认按钮 

const handleOk = (values) => {
    visible.value = false;
    printOut('导出告知卡')
};
const printOut = (name) => {
    document.body.scrollTop = 0; // IE的
    document.documentElement.scrollTop = 0; // 其他
    downloadResult(name)
}

下载

const downloadResult = (name) => {
    let canvasID = document.getElementById('modalRef')//需要导出的内容
    let a = document.createElement('a');
    html2canvas(canvasID).then(canvas => {
        let dom = document.body.appendChild(canvas);
        dom.style.display = "none";
        a.style.display = "none";
        document.body.removeChild(dom);
        let blob = dataURLToBlob(dom.toDataURL("image/png"));
        a.setAttribute("href", URL.createObjectURL(blob));
        a.setAttribute("download", name + ".png")
        document.body.appendChild(a);
        a.click();
        URL.revokeObjectURL(blob);
        document.body.removeChild(a);
    });
}
const dataURLToBlob = (dataurl) => {
    let arr = dataurl.split(',')
    let mime = arr[0].match(/:(.*?);/)[1]
    let bstr = atob(arr[1])
    let n = bstr.length, u8arr = new Uint8Array(n);
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime })
}

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

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

相关文章

应用案例 | 高效的工厂资产管理

自加入艾默生的DeltaV联盟产品计划以来,Softing一直致力于将设备管理的应用范围扩大到整个过程自动化工厂,并将设备管理的访问范围扩展到企业外部。 一 背景 随着现代流程工业对能源效率及灵活性需求的日益增长,在不同系统之间交换过程数据和…

Linux下使用命令行和配置文件两种方式实现主从复制

一、什么是主从复制? Redis的主从复制(Master-Slave Replication)是一种数据复制机制,其中一个Redis实例充当主节点(Master),而其他一个或多个Redis实例则充当从节点(Slave&#xff…

在树莓派搭建私人音乐服务器navidrome,并支持显示中文歌词

title: 019《树莓派4B家庭服务器搭建指南》第十九期:在树莓派搭建私人音乐服务器navidrome,并支持显示中文歌词 2023年,国产硬盘价格真的是经济实惠,而版权之争导致我们无法从单个平台获取想听的歌,本期我们将在树莓派…

一文带你玩转C语言文件操作

作者主页: paper jie的博客_CSDN博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《系统解析C语言》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金…

推荐企业的5大FTP传输替代方案(真货)

保护公司文件很重要,使用FTP可能不是最安全的选择。建议公司了解5种FTP传输替代方案。 使用最广泛的文件传输协议之一FTP无法满足安全性、完整性和可用性的三个目标。如果在业务运营中使用 FTP,那么是时候寻找替代方案了。这篇文章介绍了一些适用于公司…

java 报错

1. 问题:Error: could not open C:\Program Files\Java\jre1.8.0_311\lib\amd64\jvm.cfg‘ 原因:之前安装过高版本的JDK,然后删除安装低版本的JDK,配置好环境变量之后输入java -version出现如下错误: 这是因为在环境变量中Path中…

vue3+element 表格单元格合并

//SKU合并列表数据 function objectSpanMethod({ row, column, rowIndex, columnIndex }:any){ let data goodsList.value //拿到当前tatle 的数据 let cellValue row[column.property]; //当前位置的值 let noSortArr [attr_string, goods_unit, goods_sum, sale_money, …

golang 日志库logrus实践

logrus完全兼容标准的log库,还支持文本、JSON 两种日志输出格式。很多知名的开源项目都使用了这个库,如大名鼎鼎的 docker。 快速使用 第三方库需要先安装: $ go get github.com/sirupsen/logrus 后使用: package mainimport (&qu…

GPlates——【将化石点标记在古地理图上时,改变标记点的大小和形状】

GPlates在还原古地理图和计算古坐标点上功能十分卓越,最近在使用它标注某个类群的化石坐标点时,这些点在地图上显示得非常小,让人不易察觉。作为一款优秀的GUI应用,应该具备更改标记点外观的功能,然而在查阅了官方手册…

C# 快乐数

202 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为…

智安云重磅上线,“数智一体“赋能智安云生态价值实现!

智安网络作为互联网行业的先行者和持续创新者,一直秉承着为客户创造更多数字化价值的理念,在这一信念下,致力于为用户打造一个开放、安全、透明和便捷的云计算平台。2023年7月19日,智安云平台V1.0.2版本正式上线,开始面…

深入理解C语言链表

链表是一种常见的数据结构,广泛应用于计算机科学中。C语言提供了丰富的指针操作,使得链表的实现相对简便。本博客将介绍链表的基本概念,以及使用C语言实现链表的代码示例。 目录 一、链表的基本概念 二、链表的分类 三、通俗例子&#xff…

90%的人都不知道的聊天机器人作用和应用场景,你知道吗?

现在是信息爆炸的时代,随着人工智能的飞速发展,智能聊天机器人正在以惊人的速度崭露头角。简单来说,聊天机器人是一种可以模拟和处理人类会话(无论是书面还是口头会话)的计算机程序,数字设备可以像真人一样…

浅谈下mvc和mvp、mvvm到mvvm+Jetpack

作者:抓不住老鼠的猫 三种架构模式 MVC MVC全名为Model-View-Controller,图解如下 View:负责与用户交汇,显示界面。Controller:负责接收来自view的请求,处理业务逻辑。Model:负责数据逻辑&…

透过展会看思创·破茧突围稳中向好,开创激光智造新生态

日前,2023年第十七届慕尼黑光博会在上海国家会展中心成功举办。作为激光行业内快速崛起的“国家高新技术企业”,四川思创激光科技携最新的增材制造专用光纤激光器、高功率单模光纤激光器、手持激光焊设备等新一代产品,展示了在全新战略领域的创新成果。 本届展会思创激光科技以…

python flask 返回中文乱码

使用flask返回数据中带有中文的时候会显示成乱码(ascii), 中文报文: ABAP中的三大财务报表是:* **资产负债表** * **收入证明** * **现金流量表**这些报表全面概述了公司的财务状况和业绩。* **资产负债表**显示公司在特定时间点的资产、负…

招聘小程序制作:连接人才与企业

随着人才市场的竞争日益激烈,招聘小程序成为了企业寻找优秀人才和求职者找到理想工作的重要工具。通过招聘小程序,企业可以发布招聘信息、筛选简历,而求职者可以浏览职位、提交简历等。 招聘小程序的好处 精准匹配人才:招聘小程序…

【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用

从零开始封装自己的starter并且引入到其他项目中使用 简介 本文将介绍如何从零开始封装自己的starter并且引入到其他项目中使用 为什么要自己封装starter? 这样可以对spring以及其他第三方提供的starter做二次封装或者封装一些自己需要的内容提供给其他项目使用&…

实现大文件远程传输、备份和共享的小秘诀

随着公司规模的增长和业务量的提升,大文件远程传输、备份和共享已经成为了公司必须处理的重要问题。大文件传输和备份涉及到数据安全、数据传输速度、存储空间等多个方面,是一项复杂而又艰巨的任务。本文将从技术层面出发,介绍如何实现大文件…

C# OpenCvSharp+DlibDotNet 人脸替换 换脸

效果 Demo下载 项目 VS2022.net4.8OpenCvSharp4DlibDotNet 相关介绍参考 代码 using DlibDotNet; using OpenCvSharp.Extensions; using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Dra…