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 ...
随机推荐
- FG面经: Interval问题合集
How to insert interval to an interval list. List is not sorted O(N) solution: package fb; import jav ...
- 获取Type的三种方式
using System;using UnityEngine; public class Type_Test : MonoBehaviour{ private void Awake() { ...
- vue2.x入坑总结—回顾对比angularJS/React的一统
从感性的角度讲,我是不屑于用VUE,觉得react套件用起来更顺手,但是vue现在越来火,所以也不得入vue(杂烩汤)的坑.vue/anguarJS/React,三者对关系现在就是: https:// ...
- OpenStack-Neutron-VPNaaS-代码
目前juno只支持ipsec的vpn 但是其实稍微修改代码pptp/openvpn/gre也都是可以支持的,下面看看vpn服务的代码流程: 默认我们创建好了ide策略.ipsec策略和vpn服务,因 ...
- 极致21点开发DAY3
今天完成的主要任务是活动窗口的显示与关闭,以及领取金币的逻辑.用到了数据持久化技术.我想记录的主要是领取金币的逻辑. 领取金币算法:如果今天没有领取金币,即可领取,否则什么都不做. 一句话描述足矣,但 ...
- XGBoost 与 Boosted Tree
http://www.52cs.org/?p=429 作者:陈天奇,毕业于上海交通大学ACM班,现就读于华盛顿大学,从事大规模机器学习研究. 注解:truth4sex 编者按:本文是对开源xgboo ...
- 信用评分卡(A卡/B卡/C卡)的模型简介及开发流程|干货
https://blog.csdn.net/varyall/article/details/81173326 如今在银行.消费金融公司等各种贷款业务机构,普遍使用信用评分,对客户实行打分制,以期对客户 ...
- what?iView的DropDown没有element的split-button?提issure?等不及了,自己实现一个
开始正文之前,有必要先说自己实现这个组件的必要性描述. 话说大家做表格时,增删查改按钮都是放在哪里的?最简单的方式应该是这样: 是不是感觉奇丑无比啊,于是改成了这样: 但是这种操作按钮一多后就没位置放 ...
- Instrumentation接口详解
Instrumentation接口位于jdk1.6包java.lang.instrument包下,Instrumentation指的是可以独立于应用程序之外的代理程序,可以用来监控和扩展JVM上运行的 ...
- GO函数
函数定义 Go语言中定义函数使用func关键字. func 函数名(参数)(返回值){ 函数体 } 函数名:由字母.数字.下划线组成.但函数名的第一个字母不能是数字.在同一个包内,函数名也称不能重名( ...