我试图将d3图表保存为svg文件并且对图像有一些问题。我的图表还包含一些图标,这些图标也是.svg文件,但是在保存这些图标后无法找到。我收到错误:"无法加载资源:net :: ERR_FILE_NOT_FOUND"
我检查了html文件并看到该图像有两个xmlns属性:
<image xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="images/search.svg" x="-134" y="19" width="2.5em" height="2.5em"/>
但它应该是这样的
<image href="images/search.svg" x="-134" y="19" width="2.5em" height="2.5em"></image>
有人可以解释我如何解决这个问题吗?我很感激任何帮助
以下是我为d3tree设置图片的代码部分
nodeEnter.append("image")
.attr("xlink:href", function(d) {
if (d.nodetype === "contact") {
switch(d.categorie) {
case "0001": return "image/search.svg";
//....
}
}
})
这是功能
function saveAsSVG() {
var canvas = d3.select("svg").html();
var svg = '<?xml.... "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg"><style type="text/css"><![CDATA[' +this.styles + ']]></style>' + canvas + '</svg>';
var imgsrc = "data:application/svg+xml;base64," +btoa(unescape(encodeURIComponent(svg)));
var a = document.createElement("a");
document.body.appendChild(a);
a.download = "export" + ".svg";
a.href = imgsrc;
a.target = "_self";
a.click();
}
抱歉格式化问题。这就是我所拥有的一切。