【发布时间】:2018-06-12 13:51:39
【问题描述】:
我正在尝试将多个 svg 字符串转换为 png,以便我可以使用 nodejs 中的 PdfMake 将它们呈现为 pdf。这适用于一个 svg,但是当我添加多个 svg 字符串时,它们会被最后一个覆盖。使用此示例代码,它会渲染两个 png2 (svg2) 的图像。
const promises = [svg1,svg2].map(str => {
const stream = new Readable();
stream.push(str);
stream.push(null);
return svgPromise(stream);
});
const result = await Promise.all(promises);
const png1 = result[0].content;
const png2 = result[1].content;
function svgPromise(stream) {
return new Promise((resolve, reject) => {
const svg = new Rsvg();
stream.pipe(svg);
svg.on("finish", function() {
const buffer = svg.render({
format: "png",
width: width * 2,
height: height * 2
}).data;
const png = datauri.format(".png", buffer);
resolve(png);
});
});
}
不确定此错误是否与流或我的承诺逻辑有关。有什么想法吗?
依赖关系:
"librsvg": "0.7.0" “pdfmake”:“0.1.35” “datauri”:“1.0.5”
【问题讨论】:
-
你没提,你用的是node-rsvg吗?
-
我正在使用 librsvg npmjs.com/package/librsvg
标签: node.js svg promise stream pdfmake