# Illustrator Jsx

> 用 ExtendScript (.jsx) 脚本自动化 Adobe Illustrator：新建画板、绘制图形/文字/虚线、打组、批量排版、批量替换文字、导出 PNG/PDF/SVG。This skill should be used when 用户需要在 Illustrator（设计行业黑话"AI"，注意与人工智能区分）里自动排版、批量绘制或修改元素、写/改/运行 .jsx 或 ExtendScript 脚本、批量改字换字体，或要求"操控/驱动/自动化 Illustrator"、把画板导出为图片或 PDF，以及批量生成展板、导览图、桌游卡牌、展览物料等 Illustrator 原生排版任务。

- Skill: `chendeninghan-pixel/illustrator-jsx` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add chendeninghan-pixel/illustrator-jsx`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chendeninghan-pixel/illustrator-jsx/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: chendeninghan-pixel (https://skillmd.com/u/chendeninghan-pixel)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/chendeninghan-pixel/illustrator-jsx

---


# Illustrator JSX 自动化

Agent 无法直接操作 Illustrator 的图形界面，但 Illustrator 内置 ExtendScript (.jsx) 引擎——写好脚本让用户运行（或经授权后远程执行），就能自动完成排版和绘制。这条路径对**重复性、规则明确的版面**价值最大：几十张卡牌、整本物料、成批画板，手动排要几个小时，脚本几秒画完。

## 工作流程

1. **明确版面需求**：尺寸（mm 或 pt）、内容、文案、配色、字体。信息不全时先问，不要猜着写。画板尺寸以 pt 为单位，mm × 2.83465 换算。

2. **写脚本**：ES3 语法（`var`、普通函数、字符串拼接——ExtendScript 引擎停留在 2009 年，`let/const`、箭头函数、模板字符串会直接报错）。从 `references/extendscript-cheatsheet.md` 复制坐标换算、打组、光学居中等工具函数；`assets/` 里有三个实机验证过的完整示例，照着骨架写比从零写快得多，其中 `example-gallery-map.jsx` 结构最完整。

3. **语法校验**：Node 不认 .jsx 扩展名，复制成 .js 再查：
   `cp script.jsx /tmp/check.js && node --check /tmp/check.js`
   这只查语法不查逻辑，真正的验证在第 5 步。

4. **运行**，两种方式：
   - **用户手动（首选）**：Illustrator 菜单 文件 → 脚本 → 其他脚本（⇧⌘F12）。脚本写成自包含 IIFE，开头注释写清用法。手动运行不需要任何系统授权，永远可用。
   - **远程执行（需授权）**：`osascript -e 'tell application "Adobe Illustrator" to do javascript file "/abs/path.jsx"'`，Proma 的 bash 直接运行即可。首次运行若报 -10004 权限错误，引导用户去 系统设置 → 隐私与安全性 → 自动化，勾选 Proma（或运行 Agent 的应用）对 Adobe Illustrator 的授权。授权失败就退回手动方式，不要反复重试。

5. **验证闭环（关键，不要跳过）**：语法正确 ≠ 排版正确。层级翻转、中文视觉偏上、文字溢出画板这类问题只有看图才能发现。脚本里加一段导出代码把新画板存成 PNG（导出代码见 cheatsheet「导出」节），运行后用 Read 工具读取 PNG 自查：文字有没有被背景遮住、中文是否偏上、内容是否溢出。发现问题就改脚本重跑（提醒用户先删掉上次生成的画板和图层，否则越堆越多）。

## 脚本设计要点

- **不碰用户现有内容**：所有绘制放新建画板（现有画板右侧 `maxRight+100`）+ 新建图层，最后整体打组。用户拿到后可以整组拖走微调，这是"脚本生成"和"人工收尾"的交接方式。
- **坐标系是最大的坑**：Illustrator 全局坐标 y 轴向上，`rectangle(top, left, w, h)` 前两个参数是顶边和左边而非 x/y。定义 `X(d)/Y(d)` 换算函数，全程用"距画板左/顶部距离"写布局，见 cheatsheet。
- **中文文字会视觉偏上**：思源黑体等 CJK 字体的字身框远大于实际字形，geometricBounds 居中后字形偏上，用户会以为排版错了。用光学居中（复制→转曲→量真实字形→反算位置），函数在 cheatsheet，示例里也有。
- **打组必须用正序遍历**：`pageItems[0]` 是最顶层对象，倒序遍历 + PLACEATEND 会把层级整个翻转——背景矩形盖到所有文字上。这是本 skill 的起源 bug，正确代码在 cheatsheet，直接复制，不要凭直觉写。
- **开头自检**：`app.documents.length === 0` 时 alert 提示并退出，否则用户双击脚本只会看到引擎的裸报错。结尾 alert 说明画板名、目标文档名、是否发生字体回退。
- **字体按多个 PostScript 名 try/catch**（思源黑体 Medium 可能是 `SourceHanSansSC-Medium`/`CN-`/`TC-`），全失败就用默认字体并在结尾 alert 提醒用户手动改。字体名表在 cheatsheet。
- **文案集中放脚本开头**：示例脚本把文案硬编码在数据区，这是有意的——新任务只需改文案区，版式逻辑复用。

## 资源

- `references/extendscript-cheatsheet.md` — 坐标系、API 签名、打组/光学居中/导出等工具函数、字体名表。写任何脚本前先读它。
- `assets/example-gallery-map.jsx` — 展览动线导览面板：画板新建、虚线、徽章、光学居中、打组的完整示范。
- `assets/example-footer-dark.jsx` — 深底落款信息块：cursor 流式排版、画板按内容收缩、单字符变色。
- `assets/example-foldin-panel.jsx` — 折页面板：多栏布局参考。

