我的高级目标是将<div>
包含一些内联 svg 图像的元素转换为 png 文件。所有操作都必须使用 JavaScript 在客户端浏览器中执行。我试过了:
使用canvg库并按照这篇文章中的步骤操作:https ://github.com/niklasvh/html2canvas/issues/95#issuecomment-34439223
原始svg:
结果:
将css样式展平到
<svg>
标签中,然后调用canvg,按照这篇文章的步骤:将嵌入式SVG就地转换为PNG结果:空白图像。
将 css 样式展平到
<svg>
标签中并手动将 svg 绘制到画布上,按照这篇文章中的步骤操作: 如何将带有 css 样式的内联 SVG 从浏览器保存/导出到图像文件结果:空白图像。
使用以下代码将 css 样式展平为内联样式表:http: //spin.atomicobject.com/2014/01/21/convert-svg-to-png/
结果:空白图像。
使用svg crowbar手动将
<div>
元素下载为 .svg 文件。结果:
然后,当我将原始 svg 的计算 css 与下载的 svg 进行比较时,我发现下载的 svg 具有正确的 svg xml,但内联样式表不正确 (
<style type="text/css">
) 例如图最右侧的数字 200、300,它们在我的外部 css中绘制<text x="214" dy=".32em" y="0" style="text-anchor: start;">200</text>
,我有:.scatterChart .axisGraphicsContext 文本 { 字体大小:8px; 填写:#777;}
但是,下载的 svg 的内联样式表中没有 font-size 和 fill 属性。