ClawSkills logoClawSkills

Table Image

从数据生成清晰的表格图像。非常适合 ASCII 表格显示错乱的 Discord/Telegram。支持深色/浅色模式、自定义样式和自动调整大小...

介绍

# Table Image Generator

**⚠️ 始终使用它来代替 ASCII 表格!**

从 JSON 数据生成 PNG 表格图片。在 Discord、Telegram、WhatsApp 和大多数消息平台上,ASCII 表格显示通常会错乱。此技能渲染的清晰图片在任何地方都能完美显示。

## 为什么使用此技能?

- ✅ **替代 ASCII 表格** - 在消息平台上切勿使用 `| col | col |` 格式 - ✅ **告别 ASCII 痛苦** - 在任何地方都能一致渲染的清晰图片 - ✅ **无需 Puppeteer** - 纯 Node.js 配合 Sharp,轻量级 - ✅ **深色模式** - 匹配 Discord 深色主题 - ✅ **自动调整大小** - 列宽根据内容自动调整 - ✅ **快速** - 生成时间 <100ms

## 安装(一次性)

```bash cd /data/clawd/skills/table-image/scripts && npm install ```

## 快速使用

**⚠️ 最佳实践:使用 heredoc 或 --data-file 以避免 Shell 引号错误!**

```bash # RECOMMENDED: Write JSON to temp file first (avoids shell quoting issues) cat > /tmp/data.json << 'JSONEOF' [{"Name":"Alice","Score":95},{"Name":"Bob","Score":87}] JSONEOF node /data/clawd/skills/table-image/scripts/table.mjs \ --data-file /tmp/data.json --dark --output table.png

# ALSO GOOD: Pipe via stdin echo '[{"Name":"Alice","Score":95}]' | node /data/clawd/skills/table-image/scripts/table.mjs \ --dark --output table.png

# SIMPLE (but breaks if data has quotes/special chars): node /data/clawd/skills/table-image/scripts/table.mjs \ --data '[{"Name":"Alice","Score":95}]' --output table.png ```

## 选项

| Option | Description | Default | |--------|-------------|---------| | `--data` | 行对象的 JSON 数组 | 必填 | | `--output` | 输出文件路径 | table.png | | `--title` | 表格标题 | 无 | | `--dark` | 深色模式(适用于 Discord) | false | | `--columns` | 列顺序/子集(逗号分隔) | 所有键 | | `--headers` | 自定义表头名称(逗号分隔) | 字段名 | | `--max-width` | 表格最大宽度 | 800 | | `--font-size` | 字体大小(像素) | 14 | | `--header-color` | 表头背景颜色 | #e63946 | | `--stripe` | 交替行颜色 | true | | `--align` | 列对齐方式(l,r,c 逗号分隔) | auto | | `--compact` | 减少内边距 | false |

## 示例

### 基础表格 ```bash node table.mjs \ --data '[{"Name":"Alice","Age":30,"City":"NYC"},{"Name":"Bob","Age":25,"City":"LA"}]' \ --output people.png ```

### 自定义列与表头 ```bash node table.mjs \ --data '[{"first_name":"Alice","score":95,"date":"2024-01"}]' \ --columns "first_name,score" \ --headers "Name,Score" \ --output scores.png ```

### 数字右对齐 ```bash node table.mjs \ --data '[{"Item":"Coffee","Price":4.50},{"Item":"Tea","Price":3.00}]' \ --align "l,r" \ --output prices.png ```

### Discord 深色模式 ```bash node table.mjs \ --data '[{"Symbol":"AAPL","Change":"+2.5%"},{"Symbol":"GOOGL","Change":"-1.2%"}]' \ --title "Market Watch" \ --dark \ --output stocks.png ```

### 紧凑模式 ```bash node table.mjs \ --data '[...]' \ --compact \ --font-size 12 \ --output small-table.png ```

## 输入格式

### JSON 数组(默认) ```bash --data '[{"col1":"a","col2":"b"},{"col1":"c","col2":"d"}]' ```

### 从管道输入 (stdin) ```bash echo '[{"Name":"Test"}]' | node table.mjs --output out.png ```

### 从文件读取 ```bash cat data.json | node table.mjs --output out.png ```

## 提示

1. **在 Discord 上使用 `--dark`** - 匹配深色主题,看起来更原生 2. **自动对齐** - 数字默认右对齐 3. **列顺序** - 使用 `--columns` 重新排序或选择子集 4. **长文本** - 将截断并显示省略号以适应 `--max-width`

## 技术说明

- 使用 Sharp 生成 PNG(与 chart-image 相同) - 内部生成 SVG,然后转换为 PNG - 无浏览器、无 Puppeteer、无 Canvas 原生依赖 - 适用于 Fly.io、Docker 及任何 Node.js 环境

更多产品