我想一個D3圖表編碼爲在HTML電子郵件服務器端D3 - SVG編碼爲Base64編碼的圖像
使用一個base64形象到目前爲止,我有:
var express = require('express');
var app = express();
var jsdom = require('jsdom');
app.get('/chart', function (request, response) {
try {
jsdom.env(
"<html><body><svg id=\"svg\"></svg></body></html>",
['http://d3js.org/d3.v3.min.js'],
function (err, window) {
var svg = window.d3.select("svg")
.attr("width", 100)
.attr("height", 100);
svg.append("rect")
.attr("x", 10)
.attr("y", 10)
.attr("width", 80)
.attr("height", 80)
.style("fill", "orange");
var encoded = ...; // How do I now encode this?
response.send({
"html": window.d3.select("body").html(),
"encoded": encoded
});
}
);
} catch (err) {
console.error(err);
}
});
// Run Server
var port = process.env.PORT || 8305;
var server = app.listen(port, function() {
var host = server.address().address;
console.log('App listening at http://%s:%s', host, port);
});
該輸出SVG的HTML這是有用的,但是我也想第二個響應字段encoded
它應該包含這樣象下面這樣我可以在我的HTML電子郵件使用:
"encoded": "data:image/png;base64,iVBORw0KGgoAAAANSUhEU...etc"
如何編碼這個SVG?如果可能,我想避免任何文件寫入,並從SVG直接進入編碼圖像。另外,我知道你可以在電子郵件中使用SVG,但我更願意使用編碼的圖像格式。謝謝!
謝謝,這會使事情變得不同,如果我允許寫入文件系統? – Edd
在這種情況下,您不會將svg傳輸到轉換器,而是將svg保存到文件中,然後將文件名傳遞給轉換器。所以,不太不同。查看imagemagick文檔以獲取一些提示。 – RecencyEffect