如何使用Python调用执行Illustrator的批量自定义Action动作
Python调用Illustrator自定义动作的实现方案
前置依赖安装
先安装pywin32库用于调用Windows COM接口:pip install pywin32
核心调用逻辑
你之前尝试的直接将动作名作为应用对象属性调用的写法是错误的,Illustrator没有把动作直接挂载为应用对象的属性,需要通过专用的DoScript方法执行预设动作。
调用时需要传入两个参数:自定义动作名称、动作所属的动作集名称,两个参数都要和Illustrator动作面板里的命名完全一致(大小写、空格、特殊符号都不能有偏差)。
完整批量处理示例代码
import win32com.client import os import time # 初始化Illustrator应用对象 ai_app = win32com.client.Dispatch("Illustrator.Application") # 配置参数 action_name = "Export" # 你的自定义动作名称 action_set = "我的动作集" # 替换为你自己的动作所属的动作集名称,可在Illustrator动作面板查看动作上层的文件夹名 source_folder = r"C:\你的图片存储文件夹路径" # 替换为Pillow处理后输出图片的文件夹路径 # 遍历文件夹内所有图片批量处理 for filename in os.listdir(source_folder): file_path = os.path.join(source_folder, filename) # 跳过非文件项,可根据你的图片格式补充后缀过滤规则 if not os.path.isfile(file_path) or not filename.lower().endswith(('.png', '.jpg', '.jpeg')): continue try: # 打开文件 ai_doc = ai_app.Open(file_path) # 等待文件加载完成,避免报错 time.sleep(0.5) # 执行自定义动作 ai_app.DoScript(action_name, action_set) # 如果你的Export动作里已经包含保存、关闭文档的逻辑,可省略下面两行 ai_doc.Save() ai_doc.Close() except Exception as e: print(f"处理文件{filename}失败:{str(e)}") # 出错时关闭当前打开的异常文档 try: ai_doc.Close(2) # 2代表不保存关闭 except: pass
常见问题排查
- 若调用提示动作不存在,优先核对动作名称、动作集名称的拼写,包括前后隐藏的空格
- 处理大体积图片时可适当延长sleep的等待时长,等待Illustrator资源加载完成
- 建议先测试单文件调用正常后,再跑全量批量处理逻辑
内容的提问来源于stack exchange,提问作者Antonio Mcfarren
相关产品推荐
相关产品推荐

