如何编写JSX/VBS脚本实现Illustrator每10分钟自动打印?
用JSX/VBS实现Illustrator定时自动打印
可行性结论
完全可行,Illustrator支持通过ExtendScript(JSX)或VBS脚本控制打印操作与定时任务,你的原代码因线程阻塞等问题无法正常运行,修正后即可实现需求。
原代码问题分析
- 无限
while(true)循环会彻底阻塞Illustrator主线程,导致软件假死、无法响应其他操作 app.sleep()在Illustrator的ExtendScript环境中并非可靠的定时方式,极易引发线程阻塞问题- 未处理无活动文档的异常场景,且
doc.print()参数使用不够规范
修正后的JSX实现方案
采用app.doScript()延迟调度的方式避免主线程阻塞,同时加入错误处理与边界检查:
// 设置定时间隔(毫秒):10分钟=600000,15分钟=900000 var printInterval = 600000; function autoPrint() { try { // 检查是否有已打开的文档 if (app.documents.length === 0) { alert("未打开Illustrator文档,无法执行打印"); return; } var doc = app.activeDocument; // 初始化打印配置,可自定义打印机等参数 var printOpts = new PrintOptions(); // 可选:指定目标打印机,示例:printOpts.printerName = "你的打印机名称"; doc.print(printOpts); // 调度下一次打印任务 app.doScript("autoPrint()", ScriptLanguage.JAVASCRIPT, null, printInterval); } catch (e) { alert("打印出错:" + e.message); // 出错后仍继续调度下一次任务 app.doScript("autoPrint()", ScriptLanguage.JAVASCRIPT, null, printInterval); } } // 启动定时打印流程 autoPrint();
VBS脚本实现方案
若偏好VBS,可使用以下代码通过WScript调度定时任务:
Set appIllustrator = CreateObject("Illustrator.Application") printInterval = 600000 ' 10分钟(毫秒),15分钟请改为900000 Sub AutoPrint() On Error Resume Next ' 检查是否有已打开的文档 If appIllustrator.Documents.Count = 0 Then MsgBox "未打开Illustrator文档,无法执行打印" GoTo ScheduleNext End If Set doc = appIllustrator.ActiveDocument ' 使用默认配置打印,如需自定义打印机可添加对应参数 doc.Print ScheduleNext: ' 调度下一次打印任务,后台运行避免弹窗 CreateObject("WScript.Shell").Run "wscript.exe """ & WScript.ScriptFullName & """ /scheduled", 0, False WScript.Sleep printInterval End Sub ' 避免重复启动定时任务 If WScript.Arguments.Count = 0 Then AutoPrint() End If
使用说明
- JSX脚本:打开Illustrator后,通过
文件>脚本>其他脚本选择保存的JSX文件即可启动 - VBS脚本:直接双击VBS文件启动(需确保Illustrator已打开)
- 停止任务:关闭Illustrator即可终止定时打印;若需临时停止,可在JSX中添加快捷键监听逻辑(需额外扩展)
- 测试建议:先将间隔设为10秒(10000毫秒)验证功能正常,再调整为10/15分钟
内容的提问来源于stack exchange,提问作者ali mohammadi khah
相关产品推荐
相关产品推荐

