将 HTML 呈现为图像选项 1:使用 API选项 2:使用众多可用库之一选项 3:使用 PhantomJs,也许还有一个包装库选项 4:使用 Chrome Headless,也许还有包装库

2022-08-30 00:23:13

有没有办法像PNG一样将html渲染为图像?我知道使用canvas是可能的,但我想渲染标准的html元素,例如div。


答案 1

有很多选择,他们都有自己的优点和缺点。

选项 1:使用 API

优点

  • 执行 Javascript
  • 近乎完美的渲染
  • 正确使用缓存选项时速度快
  • 缩放由 API 处理
  • 精确的计时、视口等
  • 大多数时候,他们提供免费计划

缺点

  • 如果您打算大量使用它们,则不是免费的

选项 2:使用众多可用库之一

优点

  • 大多数时候转换速度相当快

缺点

  • 渲染不良
  • 不执行 javascript
  • 不支持最新的 Web 功能(FlexBox、Advanced Selectors、Webfonts、Box Size、Media Query 等)
  • 有时安装起来不那么容易
  • 扩展复杂

选项 3:使用 PhantomJs,也许还有一个包装库

优点

  • 执行 Javascript
  • 相当快

缺点

  • 渲染不良
  • 不支持最新的 Web 功能(FlexBox、Advanced Selectors、Webfonts、Box Size、Media Query 等)
  • 扩展复杂
  • 如果有要加载的图像,那么使它工作并不容易...

选项 4:使用 Chrome Headless,也许还有包装库

优点

  • 执行 Javascript
  • 近乎完美的渲染

缺点

  • 要获得想要的结果并不容易:
    • 页面加载计时
    • 视口尺寸
  • 扩展复杂
  • 相当慢,如果html包含外部链接,甚至更慢

披露:我是ApiFlash的创始人。我尽了最大努力提供一个诚实和有用的答案。


答案 2

是的。HTML2Canvas的存在是为了渲染HTML(然后你可以将其用作图像)。<canvas>

注意:存在一个已知问题,即这不适用于 SVG