dom-to-image(将html生成为图片)

6,470 阅读1分钟

1.学习目的:

起初是老师提问知道dom-to-image的实现原理么(不知道),所以立刻跑去学习了,当然也多亏了老师总结的资料。不过……理解了整套流程以后,想到那这个方式的使用场合是怎样的呢?根据理解一定有网页截图、截屏。还可以做什么我一时会没有想到,如果想到了再来补充吧~

2.实现原理

使用svg的一个特性,允许在<foreignobject>标签中包含任意的html内容。主要是 [XMLSerializer |dom转为svg]developer.mozilla.org/zh-CN/docs/…

  1. 因此问需要转换为svg格式(可缩放矢量图形)
  2. 使用svg中的<foreignobject>
  1. 因此我们需要将其转换为XHTML,那么如何将dom转化为XHTML?
  • XMLSerializer 对象使你能够把一个 XML 文档或 Node 对象转化或“序列化”为未解析的 XML 标记的一个字符串。

  • 要使用一个 XMLSerializer,使用不带参数的构造函数实例化它 ,然后调用其 serializeToString() 方法:

  1. 完成转化耶~

  2. 转化完成后,我们来保存文件~

    1. 使用canvas.drawImage(image, dx, dy)方法,在Canvas上绘制图像。需要特别注意的是我们要用源元素 的CSS大小;
      developer.mozilla.org/zh-CN/docs/…
    1. 使用canvas.toBlob(callback, type, encoderOptions);方法,创造Blob对象,将canvas对象转化成图像。(用以展示canvas上的图片;这个图片文件可以被缓存或保存到本地,由用户代理端自行决定。)

developer.mozilla.org/zh-CN/docs/…

  1. 完成~