将 HTML 作为图像渲染到 Node.js 中的 Buffer 中

Posted

技术标签:

【中文标题】将 HTML 作为图像渲染到 Node.js 中的 Buffer 中【英文标题】:Render HTML as image into Buffer in Node.js 【发布时间】:2018-12-24 15:57:30 【问题描述】:

呈现原始 html 字符串的最简单方法是什么,例如:

<b>Hello World</b>

作为 PNG 图像放入标准 Node.js 缓冲区?

我一直在 npm 上搜索一个可以让我这样做的模块,但我一直找不到。它们似乎都直接渲染到一个文件中。

【问题讨论】:

可能使用无头浏览器及其打印功能。所以看看puppeteer 或类似的。 @Sirko 这正是我想要的。太感谢了!我希望你能回答我,这样我才能相信你。 :) 【参考方案1】:

一种方法是使用类似puppeteer 的东西来模拟浏览器环境,然后使用它的屏幕截图/打印功能来创建PNG 文件。

一些代码(在 puppeteer 文档之后 - 未测试):

const puppeteer = require('puppeteer');

(async () => 
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.setContent( yourHTMLCode );
  await page.screenshot(path: 'example.png');

  await browser.close();
)();

【讨论】:

以上是关于将 HTML 作为图像渲染到 Node.js 中的 Buffer 中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用SendGrid将图像嵌入到Node.js中的html邮件中

使用飞碟将图像渲染为内存中的 PDF

如何使用 node js 将图像上传并保存到 mongodb

如何使用sharp.js将图像从缓冲区存储到node.js中的文件系统

如何修复 Node.js 中的“413 请求实体太大”错误

使用 Node.js 和 express-handlebars 从 JSON 文件渲染 html