html2png.dev:一条 POST 把 HTML 渲染成高清图片的边缘 API
阅读时间: 大约 7 分钟
html2png.dev:一条 POST 把 HTML 渲染成高清图片的边缘 API

做开发者常常遇到一个小而烦的需求:把一段 HTML 渲染成一张图——比如给每篇博客动态生成社交分享卡片(OG image)、把发票模板渲染成 PDF、让 LLM agent 直接吐一张图。自己搭意味着装 Puppeteer/Playwright、维护 Chromium 版本、搞队列和并发,长期是一笔隐性运维账。html2png.dev 把这件事收窄成一个 HTTP 端点:POST https://html2png.dev/api/convert,请求体直接放原始 HTML,拿回一张托管好的图片 URL。官方定位很直白:“The image generation API your LLM will love to use”。
一、怎么用:原始 HTML 进,图片 URL 出
它刻意把接口做得极简——不要 SDK、不要 API Key、不要 JSON 包裹:
POST https://html2png.dev/api/convert?width=1200&height=630&format=png&deviceScaleFactor=2
Content-Type: text/html
<h1 style="font-family:sans-serif">Hello world</h1>响应是 JSON,关键字段:url(可直接嵌入的公开图片路径)、filename(基于内容哈希的标识)、cached(是否命中缓存)、format、timestamp、success。官方特别说明 url 不缓存(not cached),而 cached 字段表示本次是否走了缓存。因为是纯 HTTP,Node / Python / PHP / Go 任意栈都能调,官方文档四种语言各给了一份示例。
二、渲染是怎么做的:边缘上的真实 Chromium
官方的解释分三步:POST 你的 HTML → 边缘的无头 Chromium 真实渲染 → 返回托管 URL。关键点在于它强调用的是真 Chromium 引擎,所以 Tailwind via CDN、Google Fonts、SVG、JavaScript 甚至 CSS 动画都会像在浏览器里一样执行完再截图;浏览器会等所有外部资源加载完才捕获。这也是它敢说”精准还原复杂 CSS”的底气。
可调参数覆盖了截图常见旋钮:
| 参数 | 作用 |
|---|---|
width / height | 输出画布尺寸(默认 1200×630) |
format | png / jpeg / webp / pdf |
deviceScaleFactor | Retina 缩放,1–4(2x/4x 高清) |
delay | 捕获前等待毫秒数(等动画/字体) |
zoom | 视口缩放,0.1–3.0 |
selector | 只截取某个 CSS 元素而非整屏 |
omitBackground | 透明背景(做 logo/图标) |
三、典型场景与”Agent 原生”叙事
官网列的用法很贴地气:动态 OG 分享卡、发票/收据渲染成 PDF、把 SVG/图表库产物静态化进报告和邮件、邮件内富文本降级成图片(邮件客户端会撕现代 CSS)、批量证书/票券,以及——让 Claude/GPT 这类 agent 直接 POST 一段 HTML 拿回一张成品图。最后这点它专门做了一节 “Beyond MCP”:agent 本来就会发 HTTP 请求,没必要为了出图再维护一个 MCP server。这是个合理的产品判断。
四、自建 Puppeteer vs 托管 API

它的竞争对手其实不是同类 SaaS,而是”你自己起一个 Puppeteer 服务”。取舍很清楚:托管版把起步成本压到一条 POST,但代价是 HTML 内容要发到它的边缘服务;自建版数据不出机、不受配额限制,但要自己扛 Chromium 运维。
五、口径与局限
官方 FAQ 里白纸黑字写了两条,必须照实说:
- 免费额度是 200 请求 / 小时 / 每个 IP,不需要 API Key——这意味着免费档是按 IP 限流的,多用户共用一个出口 IP 时额度会被很快打光;
- 生成”通常要几秒钟”,取决于 HTML 复杂度和外部资源加载——它不是毫秒级,不适合放在同步强延迟敏感的链路里;
- 数据出域:你的 HTML(可能含动态内容、用户名、订单金额)会发到它的边缘服务器渲染,响应官方称
url不缓存——但对合同、内部报表这类敏感 HTML,仍需自行评估是否可接受外发。
它没有公开 SLA、企业定价或自托管选项,目前就是一个面向 vibe coding / agent 出图的轻量免费端点。
还有一个容易被忽略的工程细节:因为接口设计成”原始 HTML 直接进请求体”,对 LLM agent 极其友好——模型本来就擅长生成 HTML 字符串,不需要像调传统图片 API 那样处理多层 JSON 转义、字段嵌套或 MCP 工具描述。这也是它”Beyond MCP”叙事成立的根因:把出图能力降维成一个 HTTP POST,agent 用最朴素的工具调用就能完成闭环。代价则是可观测性弱——没有 API Key 意味着没有用量后台,团队想统计谁调了多少次、失败率多少,只能在自己这侧记录响应里的 filename 与 success 字段。
六、适合谁
- 博客/SaaS 要给每篇文章、每个用户动态生成 OG 分享图;
- 想用程序批量把 HTML 模板变成发票/证书 PDF;
- 让 LLM agent 直接产出图片,而不愿搭 MCP server 或自建浏览器集群。如果你的渲染是高频、含敏感数据或对延迟苛刻,自建 Playwright 仍是更可控的选择。