gpt4 book ai didi

node.js - 使用 Promise 在 Node.js 中将多个 svg 字符串流式传输到 png

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:58 28 4
gpt4 key购买 nike

我正在尝试将多个 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);
});
});
}

不确定此错误是否与流或我的 promise 逻辑有关。有什么想法吗?

依赖关系:

“librsvg”:“0.7.0”“pdfmake”:“0.1.35”“数据”:“1.0.5”

最佳答案

列出所有使用过的模块是值得的。假设您使用 datauri ,看来您需要为每个调用初始化一个新实例:

      svg.on("finish", function() {
const datauri = new Datauri();
const buffer = svg.render({
format: "png",
width: 16,
height: 16
}).data;
const png = datauri.format(".png", buffer);
resolve(png);
});

关于node.js - 使用 Promise 在 Node.js 中将多个 svg 字符串流式传输到 png,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48068057/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com