戦国時代で絵の上手い武将と言うと伊達政宗。海外の画風を取り入れた作品を描いていました。
どうも、クリーク・アンド・リバー社 COYOTE 3DCG STUDIO テクニカルチーム所属、戦国大好き人間の中林です。
今回の記事内容はWindows専用になります。
なぜIllustratorをPythonで操作したのか
今回はとある伝手からIllustratorのツールを弊チームで開発することになりました。
依頼内容で最も重視したのはIllustratorを起動していなくても、複数ファイルを処理して欲しいでした。
Illustratorを起動後の処理ならUXPを使うのですが、起動前からの処理なら使い慣れたPythonで作ることにしました。
弊チームではIllustratorをPythonで操作する経験はこれまでなかったけど、同じAdobe製品のPhotoshopを操作した経験がありました。
COYOTE流テクニカルTIPS TIPS 07:【Photoshop】PythonによるPhotoshop操作
こちらの経験を元にPythonで外部からIllustratorを動かすことに挑戦をしました。
win32Com(pywin32)をインストールしよう
win32comに関しては今回Python3.13で試したところpipで簡単にインストールができました。
コマンドプロンプトから以下のコマンドで簡単にインストールできます。
pywin32の中にwin32comが含まれています。
pip install pywin32
簡単に画像の名前を取得してみよう
import win32com.client
from tkinter import messagebox
app = win32com.client.Dispatch("Illustrator.Application")
doc = app.ActiveDocument
messagebox.showinfo("ファイル名", doc.Name)
こちらは最小限のコマンドです。
Dispatchは普段使いのIllastratorが起動していなければ自動で起動します。
普段使いのIllastratorはAiファイルをダブルクリックしたときに起動するバージョンのことです。
Photoshopと違い複数起動できるからと言うわけでありませんが、起動しているIllastratorのバージョンを取得して操作することは難しいです。
基本的なコマンドはVBS準拠
win32comで使うコマンドはVBSコマンド準拠ですのです。
コマンドによっては先頭の文字を大文字にしないと動かないものもあるので、大文字にするようにしてください。
現状のIllustrator Scripting Guideはこちらにあります。
コマンドを調べる手段のひとつとして参考にしてください。
Pythonを使うメリット
個人的に大きいのは最も使い慣れた言語だからです。
特にfor文はPythonで書き慣れるとAdobe製品のJSXで使う昔ながらの書きづらいです。
正直、list[i]の書き方は面倒でできれば使いたくないです。
他に大きなメリットはQTデザイナーを通じてPysideでUIを作れるメリットは大きいです。
簡単にUIのひな形を作れるし、クライアントの要望に合わせた修正も簡単です。
DCCツールを選ばずに作れるメリットはとても大きいです。
どうしてもPythonではなくJavaScriptを使う場合
今回のIllustratorのスクリプトでは保存ぐらいしか使わなかったけど、VBAコマンドでは上手くいかない処理がありました。
そんな時はDoJavaScriptで実行することができます。
_com = 'command1;'
_com += 'command2;'
_com += 'command3;'
app.DoJavaScript(_com)
複数行でも一気に処理をすることができます。
まとめ
今回は依頼は最初にWindows限定と決まっていたので、本来のUXPとは違う方法を取りました。
機会があるなら、いつかは正攻法でのUXPのツールにも挑戦をしたいと考えています。
ただ、Pythonも広い範囲で使えるので目的に合わせて使い分けるのが良いでしょう。



