You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Adobe Illustrator中通过JS调用Python生成Code128条码遇阻求助

在Adobe Illustrator中通过JS调用Python生成Code128条码的问题修复

问题分析

你的代码存在几个关键问题:

  1. Illustrator JS脚本调用Python的方式错误,直接执行.py文件无法被系统识别,且参数传递逻辑不正确
  2. Python代码中的路径使用了未转义的反斜杠,导致路径解析失败
  3. 缺少参数校验和目录存在性检查,容易触发报错

修复后的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:22:06