经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » SVG » 查看文章
html2 canvas svg不能识别的解决方案_HTML/Xhtml
来源:jb51  时间:2021/6/7 9:23:06  对本文有异议

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

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

  1. function showQRCode() {
  2. scrollTo(0, 0);
  3. if (typeof html2canvas !== 'undefined') {
  4. //以下是对svg的处理
  5. var nodesToRecover = [];
  6. var nodesToRemove = [];
  7. var svgElem = $("#divReport").find('svg');//divReport为需要截取成图片的dom的id
  8. svgElem.each(function (index, node) {
  9. var parentNode = node.parentNode;
  10. var svg = node.outerHTML.trim();
  11.  
  12. var canvas = document.createElement('canvas');
  13. canvg(canvas, svg);
  14. if (node.style.position) {
  15. canvas.style.position += node.style.position;
  16. canvas.style.left += node.style.left;
  17. canvas.style.top += node.style.top;
  18. }
  19.  
  20. nodesToRecover.push({
  21. parent: parentNode,
  22. child: node
  23. });
  24. parentNode.removeChild(node);
  25.  
  26. nodesToRemove.push({
  27. parent: parentNode,
  28. child: canvas
  29. });
  30.  
  31. parentNode.appendChild(canvas);
  32. });
  33. html2canvas(document.querySelector("#divReport"), {
  34. onrendered: function(canvas) {
  35. var base64Str =canvas.toDataURL();//base64码,可以转图片
  36.  
  37. //...
  38.  
  39. $('<img>',{src:base64Str}).appendTo($('body'));//直接在原网页显示
  40. } }); } }

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号