将HTML源代码转换为读取流

时间:2017-10-25 05:42:28

标签: javascript node.js

最近我正在开发一个涉及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
})();

除了创建一个新文件以便将其转换为图像之外,还有其他方法吗?

对此有任何帮助将不胜感激。感谢。

2 个答案:

答案 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'));
});