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

JS-Dom转为图片,并放入pdf中进行下载

1、将dom转换为图片

  • 这里我们使用html2canvas工具插件
  • 先将dom转为canvas元素
  • 然后canvas拥有一个方法可以将绘制出来的图形转为url
  • 然后下载即可
  • 注意:如果元素使用了渐变背景并透明的话,生成的图片可能会有点问题。我下面这个案例使用了渐变背景实现元素对角线,就有问题。

1.1、下载插件并导入

npm install --save html2canvasimport html2canvas from 'html2canvas';

1.2、编写代码

<template><div class="home"><div class="content"></div><button @click="creatUrl">下载图片</button></div>
</template><script>
import html2canvas from 'html2canvas';export default {name: 'HomeView',components: {},methods: {// 生成图片creatUrl() {const setup = {useCORS: true, // 使用跨域};const dom = document.querySelector(".content")html2canvas(dom, setup).then((canvas) => {// 将canvas 转换成图片地址const link = canvas.toDataURL("image/jpg");this.downloadPicture(link, "test.jpg");});},// 导出图片downloadPicture(link, name = "未命名文件") {const file = document.createElement("a");file.style.display = "none";file.href = link;file.download = decodeURI(name);document.body.appendChild(file);file.click();document.body.removeChild(file);}}
}
</script><style lang="scss" scoped>
.home {.content {width: 100px;height: 100px;border: 1px solid #000;/* 元素添加对角线 */background: linear-gradient(to bottom left,white 50%,#000,white 51%);}
}
</style>

1.3、效果

在这里插入图片描述

2、将dom转为图片并放到pdf文件里进行下载

  • 这里使用jspdf插件,创建一个pdf文件,并把上面生成的图片放入pdf中即可完成。
  • 上面将dom元素转为图片并生成url就不再讲解

2.1、下载插件并导入

// 下载
npm install jspdf --save
npm install --save html2canvas// 导入
import jsPDF from 'jspdf'
import html2canvas from 'html2canvas';

2.2、js代码

// 生成pdf
creatPdf() {const setup = {useCORS: true, // 使用跨域};const dom = document.querySelector(".content")html2canvas(dom, setup).then((canvas) => {// 将canvas 转换成图片地址const link = canvas.toDataURL("image/jpg");// 创建pdf文件const pdf = new jsPDF();/** 1. 图片地址* 2. 格式化图片格式* 3. 图片在pdf中的x坐标* 4. 图片在pdf中的y坐标* 5. 图片在pdf中的宽度* 6. 图片在pdf中的高度*/pdf.addImage(link, 'JPEG', 0, 0, 210, 297); // 参数为下载的pdf的文件名pdf.save("test.pdf");});
},

2.3、注意

  • 我这里斜线是用背景渐变实现的,有兴趣可以查看第三章CSS的第18篇文章
  • 注意:如果有背景图的话,生成出来的图片可能会有问题。
http://www.lryc.cn/news/186846.html

相关文章:

  • Python 无废话-办公自动化Excel格式美化
  • Python视频剪辑-Moviepy音频效果afx方法
  • 让LLM模型输入token无限长
  • RabbitMQ 介绍与 SpringBootAMQP使用
  • 企业门户的必备选择,WorkPlus的定制化解决方案
  • 基于maven的项目搭建(已跑通)
  • L1-035 情人节 c++解法
  • DecimalFormat 多语言、本地化指定Locale
  • 冲刺第十五届蓝桥杯P0003倍数问题
  • 操作系统备考学习 day7 (2.3.4 ~ 2.3.5)
  • HRM人力资源管理系统源码
  • 基于SSM的旅游网站设计与实现
  • 大厂秋招真题【BFS+DP】华为20230921秋招T3-PCB印刷电路板布线(留学生专场)
  • OpenCV Python – 使用SIFT算法实现两张图片的特征匹配
  • doc转html后添加style和导航
  • Python中跨越多个文件使用全局变量
  • 设计模式 - 解释器模式
  • javascript禁止鼠标右键和复制功能
  • WebDAV之π-Disk派盘 + 咕咚云图
  • C语言-数组
  • Linux UWB Stack实现——MCPS调度接口(API)
  • el-tree中插入图标并且带提示信息
  • 竞赛选题 深度学习 YOLO 实现车牌识别算法
  • Direct3D网格(一)
  • C语言打印菱形
  • ElasticSearch搜索引擎:数据的写入流程
  • python3 调用 另外一个python脚本
  • 【13】c++设计模式——>简单工厂模式
  • 系统架构设计:2 论软件设计方法及其应用
  • 基于Winform的UDP通信