在Adobe Illustrator中通过JS调用Python生成Code128条码遇阻求助
在Adobe Illustrator中通过JS调用Python生成Code128条码的问题修复
问题分析
你的代码存在几个关键问题:
- Illustrator JS脚本调用Python的方式错误,直接执行
.py文件无法被系统识别,且参数传递逻辑不正确 - Python代码中的路径使用了未转义的反斜杠,导致路径解析失败
- 缺少参数校验和目录存在性检查,容易触发报错
修复后的Illustrator JS脚本
var idToSearch = prompt('请输入编号', ''); // 处理用户取消或空输入的情况 if (!idToSearch) { alert('请输入有效的编号'); exit(); } // 替换为你的Python解释器绝对路径(比如Python 3.9的路径) var pythonPath = "C:\\Python39\\python.exe"; // 替换为你的Python脚本绝对路径 var pythonScriptPath = "C:\\Desktop\\python\\passbar.py"; // 构建完整命令行,用引号包裹路径避免空格问题 var cmd = `"${pythonPath}" "${pythonScriptPath}" "${idToSearch}"`; // 执行系统命令并检查结果 var execResult = system.callSystem(cmd); if (execResult === 0) { alert('条码已成功生成!'); } else { alert('条码生成失败,请检查路径配置或Python环境'); }
修复后的Python脚本
import sys import barcode from barcode.writer import ImageWriter import os # 校验输入参数 if len(sys.argv) < 2: print("错误:未传入编号参数") sys.exit(1) passport = sys.argv[1].strip() if not passport: print("错误:编号不能为空") sys.exit(1) # 初始化Code128条码类 code128_class = barcode.get_barcode_class('code128') my_barcode = code128_class(passport, writer=ImageWriter()) # 保存路径:使用原始字符串避免转义问题,同时去掉扩展名让库自动添加 custom_path = r"C:\Desktop\python\barcode" # 确保保存目录存在,不存在则创建 save_dir = os.path.dirname(custom_path) if not os.path.exists(save_dir): os.makedirs(save_dir) # 保存条码 my_barcode.save(custom_path) print("条码生成成功")
关键注意事项
- Python环境配置:确保已安装依赖库,执行命令:
pip install python-barcode pillow - 绝对路径:JS脚本中的Python路径、脚本路径,以及Python中的保存路径必须用绝对路径,避免Illustrator找不到文件
- 路径转义:Windows路径需用双反斜杠
\\或原始字符串r"路径",避免转义字符导致路径解析错误 - 权限检查:确保Illustrator和Python有目标保存目录的写入权限
- 单独测试:先单独运行Python脚本测试(比如
python passbar.py 123456),确认能生成条码后再整合到Illustrator脚本
内容的提问来源于stack exchange,提问作者Adam Westeren
相关产品推荐
相关产品推荐

