現代瀏覽器都支持上的鏈接download
屬性。如果您創建指向download
屬性的圖片鏈接,則瀏覽器將下載它,而不是在瀏覽器中打開它。
由於沒有實際的文件下載,你所要做的就是編碼您的SVG字符串作爲數據-URI,所有你需要做的是...
var download = d3.select("body").append("a").attr("href", "#")
download.on("click", function(){
d3.select(this)
.attr("href", 'data:application/octet-stream;base64,' + btoa(d3.select("#viz").html()))
.attr("download", "viz.svg")
})
你可以看到一個演示這裏http://bl.ocks.org/3831266你可以在illustrator中打開下載的文件沒有任何問題。
但是有幾個問題:你必須聲明你的樣式內聯(你不能使用外部CSS樣式表樣式)。
一個快速和骯髒的解決辦法是輸出的SVG代碼,一個警告框:
download.on("click", function(){
alert(d3.select("#viz").html())
});
以及警報復制到一個文本文件,並保存爲SVG。
謝謝你的建議,但我不知道你的意思。是否有更多的例子來演示如何做每一步? – user1518600
我認爲Bill意味着您可以打開Developer Tools或Firebug,在代碼檢查器中選擇svg,將其複製並粘貼到文件中。 – Duopixel
這似乎幾乎爲我工作。但是當我這樣做時,它會切斷或切斷我的一些文字。任何想法爲什麼? – btm1