js把某个div或其他元素用图片的形式导出或下载
很多时候需要用到把页面上的某个块元素用图片的形式导出来,例如导出一些表格构成的单据
思路:把指定的html内容转换成canvas,然后再转换成图片
这里推荐使用这两个库
<script src="https://superal.github.io/canvas2image/canvas2image.js"></script>
<script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
<script>
//使用例子
var html2Img = {
init: function() {
this.initDom();
this.initEvent();
},
initDom: function() {
this.$el = {};
this.$el.$startBtn = $('#clickBtn');//触发元素
this.$el.$htmlSource = $('#youhtml');//要导出的html
this.$el.$pngContent = $('#imgshow');//转换后的图片展示
},
initEvent: function() {
var me = this;
this.$el.$startBtn.on('click', function() {
me.initSavePng(2);
});
},
initSavePng: function(N) {
var me = this;
var sourceContent = me.$el.$htmlSource;
var width = sourceContent.width();
var height = sourceContent.height();
var offsetTop = sourceContent.offset().top;
var offsetLeft = sourceContent.offset().left;
var canvas = document.createElement("canvas");
var canvas2D = canvas.getContext("2d");
// 不能小于1,否则图片不完整
var scale = N;
canvas.width = (width + offsetLeft) * scale;
canvas.height = (height + offsetTop) * scale;
canvas2D.scale(scale, scale);
canvas2D.font = "Microsoft YaHei";
var options = {
//检测每张图片都已经加载完成
tainttest: true,
canvas: canvas,
scale: scale,
//dom 放大的宽度,放大倍数和清晰度在一定范围内成正相关
width: width + offsetLeft,
// 开启日志,可以方便调试
logging: true,
//dom 放大的宽度,放大倍数和清晰度在一定范围内成正相关
height: height + offsetTop
};
html2canvas(sourceContent, options).then(function(canvas) {
//显示图片-start
var img = window.Canvas2Image.convertToPNG(canvas, width * scale, height * scale);
me.$el.$pngContent.append(img);
// 将图片恢复到原始大小
me.$el.$pngContent.find('img').css({
width: width,
height: height
});
//显示图片-end
//导出图片
window.Canvas2Image.saveAsPNG(canvas, width * scale, height * scale);
});
}
};
html2Img.init();
</script>
js把某个div或其他元素用图片的形式导出或下载的更多相关文章
- js控制div滚动条,滚动滚动条使div中的元素可见并居中
1.html代码如下 <div id="panel"> <div id="div1"></div> <div id=& ...
- js实现未知宽高的元素在指定元素中垂直水平居中
js实现未知宽高的元素在指定元素中垂直水平居中:本章节介绍一下如何实现未知宽高的元素在指定元素下实现垂直水平居中效果,下面就以span元素为例子,介绍一下如何实现span元素在div中实现水平垂直居中 ...
- 使用HTML5的JS选择器操作页面中的元素
文件命名为:querySelector.html,可在Chrome浏览器中预览效果. 1 <!DOCTYPE html> 2 <html lang="en"> ...
- 转载:js和jquery获取父级元素、子级元素、兄弟元素的方法
转载网址: 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比. JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元 ...
- JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)
JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...
- JS拖拽div(移动)
<!doctype html><html><head> <meta charset="utf-8"> <title>JS ...
- JS实现拖动div层移动
JS实现拖动div层移动 在谈到拖动div层之前,我们有必要来了解下 下面JS几个属性的区别---- pageX,pageY,layerX,layerY,clientX,clientY,screen ...
- js和jquery获取父级元素、子级元素、兄弟元素的方法{转}
先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当成DOM元素 原生的 ...
- js进阶 11-13 jquery如何包裹元素和去除元素外的包裹
js进阶 11-13 jquery如何包裹元素和去除元素外的包裹 一.总结 一句话总结:wrap().wrapAll().unwrap().innerWrap()四个方法 1.jquery中unwr ...
随机推荐
- flask 虚拟换将安装
1.1. 1.4虚拟环境的安装 1.1.1. 安装虚拟环境 1.1.1.1. 安装 注意:这里必须使用pip3 安装. sudo pip3 install virtualenv sudo pip3 ...
- python 练习1(流控制)
#!/usr/bin/python #_*_ coding:utf-8 _*_ #练习题 #1.使用while循环输入 1 2 3 4 5 6 8 9 10 #a.定义一个变量存放数字 #b.用whi ...
- 微信小程序中的rpx与移动设备物理像素
如下图: pt也称逻辑像素点,px物理像素点,1pt等于2px或者3px或更多; iphone6下面0.5pt=1px=1rpx; 使用rpx,小程序在不同设备分辨率下自行转换: PPI=物理像素开根 ...
- 容器技术研究-Kubernetes基本概念
最近在研究容器技术,作为入门,基本概念必须搞明白,今天整理一下Kubernetes的基本概念. 一.什么是Kubernetes Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部 ...
- 利用Team@OSC进行团队协作开发平台
利用Team@OSC进行团队协作开发平台 Team@OSC介绍 Team@OSC 是一个团队协作开发平台,轻松管理轻量级团队.代码运行平台(PaaS).代码质量检查应有尽有. 链接:https://t ...
- JavaScript中的转译符
转译字符 含义 \o NUL字符(\u0000) \b 退格符(\u0008) \t 水平制表符(\u0009) \n 换行符(\u000A) \v 垂直制表符(\u000B) \f 换页符( ...
- ok6410如何从sdram中启动uboot 调试 这是一个猜想还没有验证
1\在smdk6410.h中定义宏 //#define CONFIG_SKIP_LOWLEVEL_INIT 1 //#define CONFIG_SKIP_RELOCATE_UBOOT 12\将编译的 ...
- TTL和COMS电平匹配以及电平转换的方法
一.TTL TTL集成电路的主要型式为晶体管-晶体管逻辑门(transistor-transistor logic gate),TTL大部分都采用5V电源.1.输出高电平Uoh和输出低电平UolUoh ...
- mysql在Windows下使用mysqldump命令手动备份数据库和自动备份数据库
手动备份: cmd控制台: 先进入mysql所在的bin目录下,如:cd C:\Program Files\MySQL\MySQL Server 5.5\bin mysqldump -u root - ...
- css学习-》养成路线
雅虎工程师提供的CSS初始化示例代码 body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input, ...