JS如何导出Div的内容为图片
来源:互联网 发布:真实淘宝模特拍摄视频 编辑:程序博客网 时间:2024/06/05 23:59
最近因为项目需要,研究了几天用js导出页面上的div为图片。项目需求是这样的,一个页面上有统计图和统计表,另外一部分是地图,当用户点击导出报告时,需要将页面内容导出到Excel,统计表可以从后台查出列表,然后以表格形式导出;统计通采用的echarts,可以转换为base64编码,然后后台处理之后导出。但是地图这块就有点难了,首先地图不是一张图片,其次地图的图片不在本地,所以虽然我自己的功能没实现,但是研究出了div导出为图片,需要的就拿走。
div导出为图片,并不是直接完成的,原理可以认为截取屏幕上div大小,然后转换为图片格式。现在有两种方式,首先是将div转换为HTML5的画布,然后画布转换成base64编码,传回后台进行处理;第二种是先把div内容转成svg,然后再转换成base64。
第一种
- <html>
- <head>
- <meta name="layout" content="main">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
- <script type="text/javascript" src="html2canvas.js"></script>
- <script type="text/javascript" >
- $(document).ready( function(){
- $(".example1").on("click", function(event) {
- event.preventDefault();
- html2canvas(document.getElementById("textArea"), {
- allowTaint: true,
- taintTest: false,
- onrendered: function(canvas) {
- canvas.id = "mycanvas";
- //document.body.appendChild(canvas);
- //生成base64图片数据
- var dataUrl = canvas.toDataURL();
- var newImg = document.createElement("img");
- newImg.src = dataUrl;
- document.body.appendChild(newImg);
- }
- });
- });
- });
- </script>
- </head>
- <body>
- Hello!
- <div class="" style="background-color: #abc;">
- 计算机天堂测试html5页面截图
- <br>jsjtt.com
- </div>
- <textArea id="textArea" col="20" rows="10" ></textArea>
- <input class="example1" type="button" value="button">
- 生成界面如下:
- </body>
- </html>
第二种
- <!DOCTYPE html>
- <html>
- <head>
- <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
- <script type="text/javascript" src="html2canvas.js"></script>
- </head>
- <body>
- <h2>Output Image:</h2>
- <script>
- function cutDiv(){
- var divContent = document.getElementById("div").innerHTML;
- var data = "data:image/svg+xml," +
- "<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'>" +
- "<foreignObject width='100%' height='100%'>" +
- "<div xmlns='http://www.w3.org/1999/xhtml' style='font-size:16px;font-family:Helvetica'>" +
- divContent +
- "</div>" +
- "</foreignObject>" +
- "</svg>";
- var img = new Image();
- img.src = data;
- var canvas = document.createElement("canvas");
- var ctx = canvas.getContext("2d");
- img.crossOrigin="anonymous";
- img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
- ctx.drawImage(img, 0, 0);
- var canvasbase = canvas.toDataURL();
- alert(canvasbase);
- }
- </script>
- <div id="div">
- <img src="Koala.jpg" style="width:400px;height:300px"/>
- </div>
- <input type="button" value="click" onclick="cutDiv()"/>
- </body>
- </html>
这种是先把html拼接为svg,然后将组成的svg串赋给一个img的src,然后在画布上画出这个img,最后执行canvas的toDataUrl方法来获得base64码。
这种方式也没能成功导出地图,地图是openlayers做的,本身就是svg,在ctx.drawImage()方法执行时,出现错误,所以没成功。
对于其他比较常用的情况,上面两种转换效果还是蛮好的,如果有用得到的只管拿走;如果上面写的有什么不合适的,请批评指正;另外如果有做过导出地图为图片到word文档的,希望您能不吝赐教,谢谢。
转自:http://blog.csdn.NET/fengyao1995/article/details/51842486
使用html2canvas时,使用的是本地图片,但还是出现错误:Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
于是通过本地服务器localhost打开html文件,上面的错误就没有了。
- JS如何导出Div的内容为图片
- JS如何导出Div的内容为图片
- JS如何导出Div的内容为图片
- js导出div为图片
- JS 如何实现两个div的内容调换
- 将PPT内容导出为JPG图片
- 纯JS实现将DIV中的内容转化为PNG图片
- 如何判断DIV中的内容为空
- 如何判断DIV中的内容为空
- 如何将Qt窗口的内容转化为图片?
- Android中如何将View的内容转换为图片
- canvas导出为图片并用JS下载
- canvas导出为图片并用JS下载
- canvas导出为图片并用JS下载
- 网页div元素导出成图片 JS+html2canvas
- div的内容图片垂直居中代码
- js 控制打印某个 div 的内容
- js innerHTML 改变div内容的方法
- Android数据传递方式
- HDU--dp练习--1001--Robberies
- 游戏测试员攻略:如何提高测试工作的效率?
- 入门随笔
- Ubuntu下安装配置rsync
- JS如何导出Div的内容为图片
- 数据库问题之Got error 28 from storage engine。
- 思维导图帮你分析SWOT战略
- Kruskal’s Algorithm for finding Minimum Spanning Tree
- android的wifi操作
- python转义os, seek, sys, tell, readline
- java基础之javabean的规范
- HDU 1029 Ignatius and the Princess IV(STL之map函数)
- 在对话框中使用CTreeCtrl控件时,在OnNMClick消息中如何获取选中的Item以及内容