忍者ブログ

ぼんぷろぐ

InDesignとかイラレとかのスクリプトよもやま話

新しいブログに引っ越しました。

こちらのブログはもう更新しませんが、コメント欄は生きてますので疑問、ご指摘などありましたらどうぞ。

[ExtendScript]
IllustratorスクリプトとInDesignスクリプトの違い

1.実行方法

実行方法はほぼ同じで、主に以下の3つの方法があります。

①ESTKなど外部から実行
②アプリケーション上で実行
 InDesign:スクリプトパネルまたはキーボードショートカット
 Illustrator:ファイルメニューのスクリプト>その他のスクリプト
③エクスプローラー上でjsxファイルをダブルクリック
 #targetでターゲットアプリケーションを指定している場合に限る

※最近はESTKの代わりにVisual Studio Codeを使ってる方もいます。

2.エンジンの違い

ExtendScriptは#targetengineで実行エンジンの名前を指定できます。
同じ名前のエンジンで実行するとグローバル変数などを共有できます。
また、1回実行するごとにリセットされ、グローバル変数などが引き継がれない特殊なエンジンもあります(使い捨てのエンジンと呼ぶことにします)。

Illustrator InDesign
ESTKから実行時のデフォルトのエンジン名 main main
アプリケーション上で実行時のデフォルトのエンジン名 transient main
jsxをダブルクリックで実行時のデフォルトのエンジン名 main(※1) main(※1)
使い捨てのエンジン名 transient main
ESTKから実行時にエンジンを指定できる? できない できる
アプリケーション上で実行時にエンジンを指定できる? できる できる
jsxをダブルクリックで実行時にエンジンを指定できる? できない できない

※1 BridgeTalk経由で実行される

重要なのは同じ"main"エンジンが、InDesignでは使い捨てであり、Illustratorではそうでないという点です。
Illustratorの使い捨てのエンジン名はtransientですが、これをESTKから指定することはできません。

したがって、IllustratorでESTKを使う場合、1つのmainエンジンでスクリプトを何度も実行することになります。
各所で配布されているIllustratorスクリプトで、全体を(function(){.....})()で囲み、極力グローバル変数を作らないようにしているものが多いのはこうした事情によるものです(たぶん)。

3.テキスト選択時のselection

InDesignではテキストオブジェクトが入った配列です。
Illustratorではテキストオブジェクトそのものになります。配列のつもりで書いてたらエラーになります。よくやらかします。

4.y軸の方向

InDesignは下が正、Illustratorは上が正です。

5.visibleBoundsとかgeometricBoundsとかの順番

InDesignは上左下右、Illustratorは左上右下です。

6.InDesignはexit()が使える

7.Illustratorはなぜかappとか省略できる

8.サロゲートペア文字

text.charactersにおいて、サロゲートペア文字はInDesignだと1文字、Illustratorだと2文字とカウントされます。

9.ScriptUIでモーダルダイアログ

モーダルダイアログっていうのはダイアログが出ている間アプリを操作できない系のダイアログのことです。
Illustratorではモーダルダイアログが出てる間もスクリプトからはDOMをいじることができ、app.redraw()で表示を更新できます。
しかし、InDesignではできません。つまりInDesignでは、モーダルだけどプレビューを更新できる系のダイアログを作ることができません。なんとかならんかな。

10.ほかにもいーっぱいあるよ

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

kawamoto_α
(あるふぁ(仮))


InDesignで新聞組版のようなことをしています。

ツイッタ

※ブラウザによっては当ブログからDLしたzipファイルが拡張子なしになることがあるようですが、.zipを補って開いてください。



イラレ用トーンカーブスクリプト(¥1500)



クロソイド式角丸長方形スクリプト(¥500)
Illustrator用
InDesign用



イラレスクリプトをキーボードショートカットで実行するやつ(Win用)