Illustrator JSX 自动化
Agent 无法直接操作 Illustrator 的图形界面,但 Illustrator 内置 ExtendScript (.jsx) 引擎——写好脚本让用户运行(或经授权后远程执行),就能自动完成排版和绘制。这条路径对重复性、规则明确的版面价值最大:几十张卡牌、整本物料、成批画板,手动排要几个小时,脚本几秒画完。
工作流程
明确版面需求:尺寸(mm 或 pt)、内容、文案、配色、字体。信息不全时先问,不要猜着写。画板尺寸以 pt 为单位,mm × 2.83465 换算。
写脚本:ES3 语法(
var、普通函数、字符串拼接——ExtendScript 引擎停留在 2009 年,let/const、箭头函数、模板字符串会直接报错)。从references/extendscript-cheatsheet.md复制坐标换算、打组、光学居中等工具函数;assets/里有三个实机验证过的完整示例,照着骨架写比从零写快得多,其中example-gallery-map.jsx结构最完整。语法校验:Node 不认 .jsx 扩展名,复制成 .js 再查:
cp script.jsx /tmp/check.js && node --check /tmp/check.js这只查语法不查逻辑,真正的验证在第 5 步。运行,两种方式:
- 用户手动(首选):Illustrator 菜单 文件 → 脚本 → 其他脚本(⇧⌘F12)。脚本写成自包含 IIFE,开头注释写清用法。手动运行不需要任何系统授权,永远可用。
- 远程执行(需授权):
osascript -e 'tell application "Adobe Illustrator" to do javascript file "/abs/path.jsx"',Proma 的 bash 直接运行即可。首次运行若报 -10004 权限错误,引导用户去 系统设置 → 隐私与安全性 → 自动化,勾选 Proma(或运行 Agent 的应用)对 Adobe Illustrator 的授权。授权失败就退回手动方式,不要反复重试。
验证闭环(关键,不要跳过):语法正确 ≠ 排版正确。层级翻转、中文视觉偏上、文字溢出画板这类问题只有看图才能发现。脚本里加一段导出代码把新画板存成 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— 折页面板:多栏布局参考。