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将文字描边及填充文字颜色的方法
Mar 07 HTML / CSS
CSS3 实现雷达扫描图的示例代码
Sep 21 HTML / CSS
html5声频audio和视频video等新特性详细说明
Dec 26 HTML / CSS
html5 拖拽上传图片实例演示
Apr 01 HTML / CSS
HTML5的语法变化介绍
Aug 13 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
Jun 23 HTML / CSS
html5生成柱状图(条形图)效果的实例代码
Mar 25 HTML / CSS
HTML5单页面手势滑屏切换原理分析
Jul 10 HTML / CSS
使用layui实现左侧菜单栏及动态操作tab项的方法
Nov 10 HTML / CSS
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 HTML / CSS
CSS中Single Div 绘图技巧的实现
Jun 18 HTML / CSS
CSS 实现角标效果的完整代码
Jun 28 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调用Oracle存储过程
2006/10/09 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
linux下编译安装memcached服务
2014/08/03 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
早该知道的7个JavaScript技巧
2013/03/27 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
jquery判断单选按钮radio是否选中的方法
2015/05/05 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
js实现图片放大展示效果
2017/08/30 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Python自定义简单图轴简单实例
2018/01/08 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
手术室护士节演讲稿
2014/08/27 职场文书
融资合作协议书范本
2014/10/17 职场文书
民事和解协议书格式
2014/11/29 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
工程部岗位职责
2015/02/10 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
2015年中秋寄语
2015/07/31 职场文书
大学生团支书竞选稿
2015/11/21 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android