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

前端实现页面内容的截图与下载(html2canvas)

今天是一个发文的好日子😀~

👇👇👇

一个需求,要截取页面中的内容并截图保存,来看一看我是怎么实现的吧:

这里需要使用到插件--html2canvas

1.安装并引入html2canvas

npm install html2canvas
import html2canvasfrom 'html2canvas'

也可以从这里找到相应的文件html2canvas.hertzen.com/dist/html2canvas.js

以便原生js引入

<script type="text/javascript" src=".\html2canvas.js"></script>

2.创建(下载按钮)点击事件:

(1)html2canvas方法来获取canvas对象,其第一个参为对应的节点,第二个是相关配置项。

(2)获取到canvas后用其toDataURL方法转换为url,并提供a链接的href(放链接)与download(文件名)并添加到页面上来进行下载(注意图片格式统一)。

(3)想要自动下载,可先将a链接藏起来,并异步使用dispatchEvent触发其点击事件,最后移除该a链接即可。

以上三步代码示例如下👇

let aimPart = document.querySelector('.app');html2canvas(aimPart,{scale: 2,width: aimPart.offsetWidth,height: aimPart.offsetHeight,allowTaint: true,    // 允许污染画布proxy: '/imgProxy'}).then((canvas) => {let imgUrl = canvas.toDataURL('image/png', 1);let downLoadLink = document.createElement('a');downLoadLink.innerText = '下载'downLoadLink.download = '铸剑山庄.png';downLoadLink.href = imgUrl;downLoadLink.className = "downLoadLink"downLoadLink.style.display = "none";// 下载图片aimPart.appendChild(downLoadLink)window.setTimeout(() => {document.querySelector('.downLoadLink').dispatchEvent(new MouseEvent('click'));aimPart.removeChild(document.querySelector('.downLoadLink'))},500)})

之后便可以下载目标节点(示例中aimPart)的相应截图了~

希望本文会对您有所帮助~ ^_^

相关文章:

前端实现页面内容的截图与下载(html2canvas)

今天是一个发文的好日子&#x1f600;~ &#x1f447;&#x1f447;&#x1f447; 一个需求&#xff0c;要截取页面中的内容并截图保存&#xff0c;来看一看我是怎么实现的吧&#xff1a; 这里需要使用到插件--html2canvas 1.安装并引入html2canvas npm install html2canv…...

VS2017 IDE 编译时的 X86、x64位 是干什么的

指定编译出的程序是x86架构下的32位程序还是64位程序 VS2017项目配置X86改配置x64位_winform:把项目由x86改为x64-CSDN博客 vs平台选项&#xff1a;Any CPU,x86,x64_vs anycpu-CSDN博客...

微信小程序 解决tab页切换过快 数据出错问题

具体问题&#xff1a;切换tab页切换过快时,上一个列表接口未响应完和当前列表数据冲突 出现数据错误 具体效果如下&#xff1a; 解决方式&#xff1a;原理 通过判断是否存在request 存在中断 并发送新请求 不存在新请求 let shouldAbort false; // 添加一个中断标志 let re…...

Taro编译警告解决方案:Error: chunk common [mini-css-extract-plugin]

文章目录 1. 背景2. 问题分析3. 解决方案3.1 更新 Taro 版本3.2 更新相关依赖3.3 调整 webpack 配置3.4 检查依赖版本 4. 拓展与分析4.1 拓展4.2 避免不必要的依赖4.3 查阅 Taro GitHub 仓库 5. 总结 &#x1f389;欢迎来到Java学习路线专栏~Taro编译警告解决方案&#xff1a;E…...

基于JavaWeb+SpringBoot+Vue电子商城微信小程序系统的设计和实现

基于JavaWebSpringBootVue电子商城微信小程序系统的设计和实现 源码获取入口前言系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 身处互联网时代&#xff0c;互联网无形中影响着人们的吃穿住行&#xff0c;人们享受着不…...

JS进阶——作用域、解构、箭头函数

1、作用域 作用域&#xff08;scope&#xff09;规定了变量能够被访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问。 1.1 局部作用域 局部作用域可分为函数作用域和块作用域。 1.1.1 函数作用域 在函数内部声明的变量只能在函数内部被访问&#xff0c;外部无…...

centos下安装mysql8版本

1、如果服务器没有wget&#xff0c;先下载wget工具 sudo yum install wget 2、下载指定mysql版本的tar包 sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar 3、解压tar包 sudo tar -xvf mysql-8.0.21-1.el7.x86_64.rpm…...

C++面试常考手写题目

C面试常考手写题目 vectorstringauto_ptrshared_ptrunique_ptrweak_ptrsingleton快排非递归heapheap_sortmerge_sort vector #include <bits/stdc.h> using namespace std;template<typename T> class vector {public:typedef T value_type;typedef T* iterator;p…...

LLM建模了什么,为什么需要RAG

LLM近期研究是井喷式产出&#xff0c;如此多的文章该处何处下手&#xff0c;他们到底又在介绍些什么、解决什么问题呢&#xff1f;“为学日增&#xff0c;为道日损”&#xff0c;我们该如何从如此多的论文中找到可以“损之又损以至于无”的更本质道或者说是这个方向的核心模型。…...

为开发GPT-5,OpenAI向微软寻求新融资

11月14日&#xff0c;金融时报消息&#xff0c;OpenAI正在向微软寻求新一轮融资&#xff0c;用于开发超级智能向AGI&#xff08;通用人工智能&#xff09;迈进&#xff0c;包括最新模型GPT-5。 最近&#xff0c;OpenAI召开了首届开发者大会&#xff0c;推出了GPT-4 Turbo、自定…...

创邻科技亮相ISWC 2023,国际舞台见证知识图谱领域研究突破

近日&#xff0c;第22届国际语义网大会 ISWC 2023 在雅典希腊召开&#xff0c;通过线上线下的形式&#xff0c;聚集了全球的顶级研究人员、从业人员和行业专家&#xff0c;讨论、发展和塑造语义网和知识图谱技术的未来。创邻科技CEO张晨博士作为知识图谱行业专家受邀参会&#…...

开源博客项目Blog .NET Core源码学习(6:雪花算法)

Blog .NET项目中有多种数据类生成对象实例时需要唯一标识&#xff0c;一般做法要么使用GUID&#xff0c;也可以保存到数据库时使用数据库表的自增长ID&#xff0c;也可以自定义规则以确保产生不重复的唯一标识&#xff0c;而在Blog .NET项目中使用雪花算法生成唯一标识。   关…...

【Python】集合与字典

按照输入顺序输出 将输入的名字去重&#xff0c;同时按照输入顺序输出 sinput().split(,) blist(set(s)) bsorted(b,keys.index) print(b) 删除集合元素、更新集合 根据操作删除更新集合 update括号里可以是一个集合&#xff0c;add只能是一个元素 discard用于删除元素&#x…...

【LeetCode】88. 合并两个有序数组

88. 合并两个有序数组 难度&#xff1a;简单 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 …...

Linux文件权限

R 代表可读 W 代表可写 X 代表可执行 文档类型有如下表示方法&#xff1a;   d - 目录&#xff0c;例如上表档名为『.gconf』的那一行&#xff1b; - - 文档&#xff0c;例如上表档名为『install.log』那一行&#xff1b; l - 链接档(link file)&#xff1b; b …...

〖大前端 - 基础入门三大核心之JS篇㉟〗- JavaScript 的DOM简介

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…...

CentOS中安装常用环境

一、CentOS安装 redis ①&#xff1a;更新yum sudo yum update②&#xff1a;安装 EPEL 存储库 Redis 通常位于 EPEL 存储库中。运行以下命令安装 EPEL 存储库 sudo yum install epel-release③&#xff1a;安装 Redis sudo yum install redis④&#xff1a;启动 Redis 服…...

python时间变化与字符串替换技术及读JSON文件等实践笔记

1. 需求描述 根据预测出结果发出指令的秒级时间&#xff0c;使用时间戳&#xff0c;也就是设定时间&#xff08;字符串&#xff09;转为数字时间戳。时间计算转换过程中&#xff0c;出现单个整数&#xff08;例如8点&#xff09;&#xff0c;按字符串格式补齐两位“08”。字符…...

leetcode刷题日记:141. Linked List Cycle(环形链表)

这一题是给我们一个链表让我们判断这是否是一个环形链表&#xff0c;我们知道如果一个链表中有环的话这一个链表是没有办法访问到尾的&#xff0c; 假若有如图所示的带环链表&#xff1a; 我们从图示中很容易看出来这一个链表在访问的时候会在里面转圈&#xff0c;我们再来看看…...

html书本翻页效果,浪漫表白日记本(附源码)

文章目录 1.设计来源1.1 书本正面1.2 界面1-21.3 界面3-41.4 界面5-61.5 界面7-81.6 界面9-101.7 界面11-121.8 书本结尾 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/1…...

下篇:那个听声辨位的侦探后来破了大案——AI中隐马尔可夫模型的类型与作用,以及它为什么还在被使用

我们说了隐马尔可夫模型是一个“只能听声、不能见人”的侦探&#xff0c;靠着一串声音推理出隔壁房间在发生什么。现在的问题是&#xff1a;它到底有哪些具体的“形态”&#xff1f;不同类型的隐马尔可夫模型分别擅长什么&#xff1f;这个“老古董”在今天还能干什么&#xff1…...

Qt6 + OpenGL 3.3 渲染环境搭建全指南:从空白窗口到专属渲染画布的优雅实现

✨ Qt6 OpenGL 3.3 渲染环境搭建全指南&#xff1a;从空白窗口到专属渲染画布的优雅实现&#x1f4cc; 前置环境准备&#x1f527; 第一步&#xff1a;创建Qt Widget Application 工程&#x1f3a8; 第二步&#xff1a;界面元素搭建与QSS样式美化2.1 核心界面元素搭建2.2 QSS样…...

从“认怂”到“被看见”:flomo的产品设计哲学

当大多数笔记软件都在追求“大而全”时&#xff0c;有一款产品选择了一条完全不同的路。它不让你写标题&#xff0c;不支持复杂排版&#xff0c;甚至在官网上大大方方地列出“自己不擅长什么”。它的创始人说&#xff1a;“35岁再创业&#xff0c;我学会了认怂。”它就是flomo&…...

VSCode本地历史记录插件Local History保姆级教程:从安装到.gitignore配置

VSCode本地历史记录插件Local History深度指南&#xff1a;从高效使用到项目集成 为什么开发者需要本地历史记录功能 在日常开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;修改了一段代码后突然意识到之前的版本可能更好&#xff0c;或者不小心覆盖了重要内容却无法撤…...

OpenAI推出Safety Bug Bounty计划:聚焦AI滥用与安全风险

OpenAI正式启动公共Safety Bug Bounty&#xff08;安全漏洞赏金计划&#xff09;&#xff0c;旨在鼓励全球研究人员识别其产品中存在的AI滥用行为和安全风险。该计划托管于Bugcrowd平台&#xff0c;是对现有Security Bug Bounty的重要补充&#xff0c;专门处理那些虽不符合传统…...

告别旋转锚点!用Oriented R-CNN在DOTA数据集上轻松实现高精度遥感目标检测(附开源代码)

突破传统限制&#xff1a;Oriented R-CNN在遥感目标检测中的实战指南 遥感图像中的目标检测一直是计算机视觉领域的难点之一。不同于常规图像中的物体&#xff0c;遥感目标往往以任意角度出现&#xff0c;传统水平边界框检测方法难以准确捕捉其空间位置。想象一下&#xff0c;…...

2024年技术趋势:AI、云计算与区块链的颠覆性变革

技术趋势预测文章大纲引言简要介绍技术趋势预测的重要性&#xff0c;提及CSDN作为技术社区的影响力&#xff0c;说明本文将基于当前技术发展分析未来趋势。人工智能与机器学习讨论生成式AI&#xff08;如GPT-4、Stable Diffusion&#xff09;的演进方向&#xff0c;包括多模态模…...

大模型小白入门指南:从工作原理到实用技巧(收藏版)

本文深入解析了大语言模型&#xff08;LLM&#xff09;的核心工作原理&#xff0c;包括Transformer架构的自注意力机制和位置编码&#xff0c;以及预训练和指令微调的训练范式。同时&#xff0c;文章还提供了实用的提示工程技巧&#xff0c;帮助读者更好地与AI协作。此外&#…...

Phi-4-reasoning-vision-15B多场景落地:OCR/图表分析/GUI理解三类任务统一部署

Phi-4-reasoning-vision-15B多场景落地&#xff1a;OCR/图表分析/GUI理解三类任务统一部署 1. 模型介绍 Phi-4-reasoning-vision-15B是微软推出的视觉多模态推理模型&#xff0c;能够处理多种视觉理解任务。这个模型特别擅长从图像中提取和理解信息&#xff0c;无论是文档文字…...

硬币凑钱--动态规划--完全背包的变式

1.硬币凑钱import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int nsc.nextInt();//背包问题的其中一种int[] dpnew int[n1];for(int i1;i<n…...