← ClaudeAtlas

diagram-png-exportlisted

为任何项目新建、修改或导出供用户查看、分享或迁移到 WIKI 的架构图、时序图、流程图及 Mermaid、内联 SVG 图表,生成白底、4 倍分辨率、完整无裁切的 PNG 附件并提供预览。适用于图太宽无法截图、需要图片附件、批量导出文档中的图等请求;不用于普通网页截图、照片或应用 UI 素材。
omeyang/Thoth · ★ 0 · AI & Automation · score 70
Install: claude install-skill omeyang/Thoth
# 图表 PNG 导出与预览 这是用户在**所有项目**中的图表交付偏好,不限于某个仓库、文档站或业务。面向用户交付新增、修改或指定导出的图表时,默认同时提供独立 PNG,方便完整查看、下载和迁移。用户当次指定只要源码、其他格式或外观时,以当次要求为准。 ## 默认结果 - PNG,白色不透明背景,浅色主题。只有用户另有要求时才附加 SVG。 - 按完整图表画布以 **4 倍分辨率直接渲染**,不把低分辨率截图放大。 - 保留原图内容、步骤、参与方、连线方向与布局。可以改善导出副本的文字对比度、标题框留白和画布边界。 - 按图表自身尺寸导出,避免被网页列宽、横向滚动容器或原 SVG 的 `viewBox` 裁切。 - 先在本机生成并逐张检查,再交付每张图片的名称和可打开的预览链接。用户自行确认和同步到 WIKI;本技能不包含 WIKI 写入。 - 保留原图和可重新生成的源码。单纯导出图片不替换正文中的原图,也不更改业务事实。 ## 找全来源 先查看实际项目的源稿、构建方式、样式和已有图表工具,不假定存在 `src/`、`content/` 或某个构建脚本。 | 来源 | 处理方式 | |---|---| | Mermaid 代码块 | 优先复用与当前源稿一致的已渲染 SVG;缓存缺失时使用项目现有 Mermaid 渲染方式。本机 pretty-mermaid 可在适合时使用 | | 手工内联 SVG | 提取完整 SVG,保留它自己的样式、`defs`、marker 和其他内部引用 | | 已有独立 SVG | 检查是否依赖外部 CSS、字体或资源,再选择浏览器或 SVG 渲染工具 | | 已有 PNG 等位图 | 优先交付清晰的原文件;像素不足时从矢量或图表源码重新生成 | 批量导出时,按页面顺序核对全部图及所属标题;不要只数 Mermaid 代码块,也不要用缓存目录的文件数代替当前页面图数。 ## 渲染完整 PNG 优先复用项目可用的渲染工具。浏览器渲染可以用 Puppeteer 或 Playwright 配合无头 Chromium;先确认已有依赖、浏览器和字体的位置,不写死 Node.js 版本目录。 1. 在任务专用临时目录准备导出数据。每张 SVG 单独渲染,防止不同图的 CSS 类、变量和 marker ID 相互影响。 2. 加载该图实际依赖的项目样式和本地字体,固定为浅色主题。字体可内嵌为 data URL 或从本机服务加载,中文字体需要覆盖图中的字符。不要依赖外链字体。 3. 将页面设为白底、零页边距,取消 SVG 和容器的响应式宽度限制;保留图内样式与箭头定义。 4. 在图和字体插入页面后等待 `document.fonts.ready`,再用 `getBBox()` 测量可见文字与图形,跳过 `defs` 中的定义。 5. 将可见内容边界与原 `viewBox` 取并集,必要时扩大画布,并在扩展的一侧留出约 16 个逻辑像素。尤其检查最右侧的自调用说明和底部注释。边界测量未必包含完整描边、箭头或阴影,仍需实际预览。 6. 标题文字紧贴边框时增加框内留白;说明文字过浅时加深颜色。只调整导出副本。 7. 将 SVG 的 `viewBox`、显示宽高和浏览器 viewport 设置为完整画布,以 4 倍倍率生成 PNG。需要整数尺寸时向上取整。可以另外生成 1 倍小图用于检查。 Puppeteer 导出关键步骤示例;需先完成图表提取、样式加载和画布计算: ```js await page.evaluate(