最近我正在开发一个涉及html模板的函数。
此功能的作用是生成动态模板,并将其转换为图像。正如我的理解和迄今为止我所做的那样,它需要在能够转换为图像文件之前成为读取流。
到目前为止,我设法像这样做了
(async () => {
var InternalURL = "https://jsonplaceholder.typicode.com/posts/1";
var ExternalURL = "https://jsonplaceholder.typicode.com/comments";
let image, data = await $.getJSON(InternalURL);
if(data) {
// Some code
} else {
// request failed
}
if(!image) {
let data = await $.getJSON(ExternalURL);
if(data) {
// Some code
} else {
// request failed
}
}
// Some code
})();
除了创建一个新文件以便将其转换为图像之外,还有其他方法吗?
对此有任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
来自How to create streams from string in Node.Js?
的回答var Readable = require('stream').Readable;
var s = new Readable();
s.push('<html>...</html>');
s.push(null)
.pipe(convert()) //function from html-convert npm package
.pipe(fs.createWriteStream('out.png'))
});
答案 1 :(得分:1)
使用node-webshot
https://github.com/brenden/node-webshot
var webshot = require('webshot');
webshot('<html><body>Hello World</body></html>', 'hello_world.png', {siteType:'html'}, function(err) {
});
<强>更新强>
如果你想将渲染的html截图作为base64,你可以
var renderStream = webshot('<html><body>Hello World</body></html>', {siteType:'html'});
renderStream.on('data', function(data) {
console.log(data.toString('base64'));
});