首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

探索如何将html和svg导出为图片

处理存在foreignObject标签的情况 svg提供了一个foreignObject标签,可以插入html节点,实际上,笔者就是使用它来实现节点的富文本编辑效果的: 接下来使用前面的方式来导出,...foreignObject标签内容在firefox浏览器上无法显示 对于svg的操作笔者使用的是svg.js库,创建富文本节点的核心代码大致如下: import { SVG, ForeignObject...} from '@svgdotjs/svg.js' let html = `节点文本` let foreignObject = new ForeignObject() foreignObject.add...(SVG(html)) g.add(foreignObject) SVG方法是用来将一段html字符串转换为dom节点的。...foreignObject标签的svg,使用dom-to-image转换,它会再次把传给它的svg添加到一个foreignObject标签中,这不是套娃吗,既然dom-to-image-more能通过foreignObject

44321

@antvg6自定义节点dom类型shape无法触发事件原因分析

}, name: 'dom-shape', draggable: true, }); return keyShape; } }); 原因分析 g6只有svg...渲染模式画布可以支持dom类型节点,原理是通过foreignObject标签渲染dom 在事件触发时canvas会对比svg dom拾取的对象和shape对应的标签确定触发哪个节点的事件 @antv.../g-svg/src/canvas.ts // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可 getShape(x: number, y:...= target) as IShape; } 此逻辑中通过SHAPE_TO_TAGS的映射判断dom是否对应到shape的逻辑有问题,SHAPE_TO_TAGS值如下,可见映射关系反了,导致并不能通过foreignObject...标签获取到类型dom,从而无法正确定位dom类型的shape circle: "circle" dom: "foreignObject" ellipse: "ellipse" image: "image

1.4K20

绘制SVG内容到Canvas的HTML5应用

SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术,两种绘制图形方式各有优缺点,但两者并非水火不容,尤其是SVG内容可直接绘制在Canvas上的功能,使得两者可以完美的融合在一起,让...Canvas可享用到现有丰富的SVG素材,并不失SVG矢量无级缩放的特点。...png类型,而SVG格式的数据类型为data:image/svg+xml的类型,下图为该HT for Web拓扑图拖拽入SVG格式图片的运行效果: ?...以下一段小例子,展示了加载一个SVG图片后,分为七个基本进行缩放绘制的效果,可看出Canvas绘制SVG可保持其矢量不失真的特性 function draw(){     var img = new Image...绘制到Canvas还有一种特殊的应用场景,就是将HTML元素通过SVGforeignObject特性描述在SVG中,然后Canvas绘制SVG时,即可把foreignObject描述的HTML内容绘制到

1.8K30

绘制SVG内容到Canvas的HTML5应用

SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术,两种绘制图形方式各有优缺点,但两者并非水火不容,尤其是SVG内容可直接绘制在Canvas上的功能,使得两者可以完美的融合在一起,让...Canvas可享用到现有丰富的SVG素材,并不失SVG矢量无级缩放的特点。...png类型,而SVG格式的数据类型为data:image/svg+xml的类型,下图为该HT for Web拓扑图拖拽入SVG格式图片的运行效果: ?...以下一段小例子,展示了加载一个SVG图片后,分为七个基本进行缩放绘制的效果,可看出Canvas绘制SVG可保持其矢量不失真的特性 function draw(){ var img = new Image...绘制到Canvas还有一种特殊的应用场景,就是将HTML元素通过SVGforeignObject特性描述在SVG中,然后Canvas绘制SVG时,即可把foreignObject描述的HTML内容绘制到

4.8K80

浅谈两种前端截图方式:Canvas截图 vs SVG截图

Canvas截图:html2canvas SVG截图:rasterizehtml 原理 首先来谈下两种前端截图方式的原理,虽然实现方式不太一致,但是核心思想是相同的。...以rasterizehtml为代表的SVG截图,通过遍历DOM克隆一份副本,利用SVGforeignObject把DOM作为外部资源嵌套在SVG中,将此SVG在Canvas上重新绘制,并根据DOM的样式应用在对应的绘制元素上...转换过程可理解成:DOM→SVGForeignObject→Canvas→Image。 两种前端截图方式最后都是通过把DOM绘制到Canvas,再通过Canvas输出图片。...Canvas截图的限制性 无法渲染跨域资源(支持同域) 无法渲染iFrame和Flash内容(支持SVG) SVG截图的限制性 无法渲染跨域资源(支持同域) 无法渲染如lazyload等通过JS加载的资源...Download(base64, "screenshot.png"); }); }, err => alert("截图失败,请重新尝试")); }); SVG

11.8K50
领券