html2 canvas svg不能识别的解决方案


Posted in HTML / CSS onJune 03, 2021

  最新有个功能需要截取网页成图片,于是用到比较流行的html2canvas,本来以为能顺顺利利的搞定,后来发现网页上的流程图连接线不在截图中。于是各种百度、bing,也搜到好多,但是感觉没有一个完整的代码,现在自己解决了,分享下代码。

  首先需要下载canvg.js,github地址:https://github.com/canvg/canvg

function showQRCode() {
                scrollTo(0, 0);
               
                if (typeof html2canvas !== 'undefined') {
                    //以下是对svg的处理
                    var nodesToRecover = [];
                    var nodesToRemove = [];
                    var svgElem = $("#divReport").find('svg');//divReport为需要截取成图片的dom的id
                    svgElem.each(function (index, node) {
                        var parentNode = node.parentNode;
                        var svg = node.outerHTML.trim();

                        var canvas = document.createElement('canvas');
                        canvg(canvas, svg); 
                        if (node.style.position) {
                            canvas.style.position += node.style.position;
                            canvas.style.left += node.style.left;
                            canvas.style.top += node.style.top;
                        }

                        nodesToRecover.push({
                            parent: parentNode,
                            child: node
                        });
                        parentNode.removeChild(node);

                        nodesToRemove.push({
                            parent: parentNode,
                            child: canvas
                        });

                        parentNode.appendChild(canvas);
                    });
                    html2canvas(document.querySelector("#divReport"), {
                        onrendered: function(canvas) {
                            var base64Str =canvas.toDataURL();//base64码,可以转图片

                            //...

                            $('<img>',{src:base64Str}).appendTo($('body'));//直接在原网页显示
                         }                     });                }            }

到此这篇关于html2+canvas svg不能识别的解决方案的文章就介绍到这了,更多相关html2 canvas svg不能识别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
CSS3弹性伸缩布局之box布局
Jul 12 HTML / CSS
使用CSS3来制作消息提醒框
Jul 12 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
Aug 25 HTML / CSS
一篇文章带你学习CSS3图片边框
Nov 04 HTML / CSS
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
Apr 10 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
Mar 25 HTML / CSS
2014年圣诞节倒计时网页的制作过程
Dec 05 HTML / CSS
HTML5制作表格样式
Nov 15 HTML / CSS
HTML5为输入框添加语音输入功能的实现方法
Feb 06 HTML / CSS
微信端html5页面调用分享接口示例
Mar 14 HTML / CSS
canvas生成带二维码海报的踩坑记录
Sep 11 HTML / CSS
css3 文字断裂效果
Apr 22 HTML / CSS
HTML+CSS 实现顶部导航栏菜单制作
Jun 03 #HTML / CSS
CSS极坐标的实例代码
css height属性中的calc方法详解
Jun 03 #HTML / CSS
html+css实现文字折叠特效实例
html+css实现分层金字塔的实例
html+css实现赛博朋克风格按钮
HTML+CSS制作心跳特效的实现
You might like
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
Bootstrap表单布局
2016/07/19 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
vue实现表格过滤功能
2019/09/27 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
[01:44]《为梦想出发》—联想杯DOTA2完美世界全国高校联赛
2015/09/30 DOTA
Python中的With语句的使用及原理
2020/07/29 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
中科软测试工程师面试题
2012/06/16 面试题
电脑销售顾问自荐信
2014/01/29 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
整改报告怎么写
2014/11/06 职场文书
2014年收银工作总结
2014/11/13 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
先进党组织事迹材料
2014/12/26 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis