我在一个项目中遇到了同样的问题。客户需要一个相当复杂的图表。我们决定使用svg来开发它。工作非常完美,但是客户想要能够将图形下载为图片。在互联网上搜索后,我们找到了saveSvgAsPng(https://www.npmjs.com/package/save-svg-as-png)。这对我们很有帮助。
该图表在页面中如下所示:
<svg id="graph1" style="width: 700px; height: 700px">
....
.....
...
</svg>
图表已显示,但无法下载或复制。因此,这是我所采取的步骤:
- 我安装了上述提到的软件包。
<script src="/path/to/lib/save-svg-as-png/lib/saveSvgAsPng.js"></script>
- 将“display: none:”添加到svg代码中,否则我们将拥有两个相同图像的实例:
<svg id="graph1" style="width: 700px; height: 700px; display: none">
</svg>
在svg图形声明之后,我添加了一个新的图像。这张图片是svg图像的新png图像表示的占位符。一开始我将其隐藏,以防止图片在加载时闪烁。初始时源未指定:
<img id="graph1_as_png" src="" width="700" height="700" style="display: none">
在新添加的图片之后,我添加了一些代码行,用于进行转换操作:
<script>
svgAsPngUri(document.getElementById("graph1")).then(uri => {
$("#graph1_as_png").attr('src', uri).show();
});
</script>
第二张图片的源代码被填充了一个BASE64编码版本的svg。转换后,图像将显示出来。现在我们有了与svg图像完全相同的图像,但可以下载或复制该图像。
我希望这也能对您有所帮助。