一个用于在浏览器中构建和渲染 3D 场景的 JavaScript 库,基于 WebGL 与 WebGPU。
zumerlab/snapdom
浏览器端 JavaScript 引擎,可将 DOM 元素截取并导出为 SVG、PNG、JPG、WebP 等格式,并支持 PDF、矢量等插件。
可替代:html2canvas
- Star
- 8,197
- Fork
- 307
- 未关闭 Issue
- 5
- 最近提交
- 14小时前
这是什么?
SnapDOM 在页面内截取 DOM 元素,并将其转换为 SVG、PNG、JPG、WebP、canvas 或 Blob 等格式。同一次截取可以复用于多种输出,即使源元素之后发生变化,结果仍保留截取时的状态。
官方插件可把同一次截取导出为独立的 HTML、可搜索分页的 PDF、可编辑的矢量 SVG(并支持复制到 Figma 剪贴板),也可导出供智能体使用的文本或 JSON 上下文、动图 GIF 和浏览器编码的视频。开发者还可以基于文档中的插件钩子编写自定义导出器。核心库无依赖,完全在浏览器中运行,需要 DOM 环境,不能直接在 Node.js 中使用。
库提供输出尺寸、DPR、背景色、排除或隐藏元素、嵌入网页字体、裁剪等选项。PNG 文件导出可处理超出画布限制的长页面,裁剪选项则允许将大页面分块栅格化。
核心功能
- 01一次截取即可输出 SVG、PNG、JPG、WebP、canvas 或 Blob。
- 02未变化的截取会被复用,小改动只重建受影响的子树。
- 03官方插件支持导出 HTML、PDF、可编辑矢量、GIF 和视频。
- 04插件钩子允许开发者编写自定义导出器。
- 05可通过选项控制尺寸、缩放、背景、排除元素和字体嵌入。
- 06提供 ES 模块、script 标签和 TypeScript 类型声明。
适用场景
- 在 Web 应用中将仪表盘、图表或账单导出为图片分享。
- 基于页面渲染内容生成 PDF 报告或可打印页面。
- 导出可编辑的矢量图形,或将设计粘贴到 Figma。
- 为 AI 智能体提供页面内容的文本或图像视图。
快速上手
- 1
使用 npm 安装核心包
npm i @zumer/snapdom - 2
导入 snapdom 并将元素导出为 PNG
使用前须知
- SnapDOM 需要浏览器 DOM,服务端 Node.js 运行时需要浏览器环境。
- 跨域的图片、字体和样式表需要可读资源或代理,跨域 iframe 会显示占位内容。
- SVG 输出依赖 foreignObject,在浏览器之外的查看器中支持程度不一。
标签
常见问题
- snapdom 是什么?
- 浏览器端 JavaScript 引擎,可将 DOM 元素截取并导出为 SVG、PNG、JPG、WebP 等格式,并支持 PDF、矢量等插件。 SnapDOM 在页面内截取 DOM 元素,并将其转换为 SVG、PNG、JPG、WebP、canvas 或 Blob 等格式。同一次截取可以复用于多种输出,即使源元素之后发生变化,结果仍保留截取时的状态。
- snapdom 可以免费使用吗?用的什么许可证?
- snapdom 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- snapdom 还在维护吗?
- 活跃维护中。snapdom 最近一次提交是在 2026年10月20日。
- snapdom 适合用来做什么?
- 在 Web 应用中将仪表盘、图表或账单导出为图片分享。 基于页面渲染内容生成 PDF 报告或可打印页面。 导出可编辑的矢量图形,或将设计粘贴到 Figma。 为 AI 智能体提供页面内容的文本或图像视图。
- snapdom 怎么安装和运行?
- 使用 npm 安装核心包: npm i @zumer/snapdom 导入 snapdom 并将元素导出为 PNG
- 在哪里获取 snapdom?
- 源代码和安装说明在 GitHub 上:https://github.com/zumerlab/snapdom
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向网页的高性能 2D 渲染库,基于 WebGL 和 WebGPU 绘制图形、精灵与文本。
一款 MIT 协议的无限画布白板 SDK,支持 React、React Native 和原生 JavaScript,可作为 tldraw 的免费替代。
基于 C++/Qt 的跨平台截图工具,支持内置标注编辑、命令行与 DBus 调用。
轻量的 React DOM 测试工具,按用户实际使用的方式查询和操作组件。
在浏览器中直接运行 Hugging Face Transformers 模型,无需服务器。