Adobe Illustrator で JavaScript を使ってバッチを実行する 〜 Illustrator ファイルを PNG に変換するスクリプト
はじめに
- Illustrator でアクションのバッチをやってみようと思いググってみましたがいまいちよくわかりませんでした。
- 調べているうちに JavaScript が使えることがわかり、こっちの方が親しみやすかったので、Illustrator で JavaScript をつかってバッチを実行する方法をまとめてみます。
概要
- 公式ドキュメント
Illustrator では複数のスクリプト環境がサポートされています(Microsoft Visual Basic、AppleScript、JavaScript、ExtendScript など)。 Illustrator に付属する標準スクリプトを使用することも、独自のスクリプトを作成してスクリプトサブメニューに追加することもできます。
ドキュメント
- Illustrator CS6 Scripting Guide (英語)
- Adobe Illustrator CS6 Scripting Reference: JavaScript (英語)
サンプルスクリプト
- サンプルスクリプトはインストール時についてきます。
- 拡張子は jsx です。
- CS6だと以下のパスにありました。
- /Applications/Adobe Illustrator CS6/Presets.localized/ja_JP (/アプリケーション/Adobe Illustrator CS6/プリセット/ja_JP)
- /Applications/Adobe Illustrator CS6/Scripting.localized/Sample Scripts.localized (/アプリケーション/Adobe Illustrator CS6/スクリプティング/サンプルスクリプト)
Illustrator ファイルを PNG に変換するスクリプト
つくりかた
- サンプルスクリプトを参考に、Illustrator ファイルを PNG に変換するスクリプトを実装してみました。
- もとにしたのは、プリセット以下にある「ドキュメントをSVGとして保存.jsx」で、SVG関連箇所をPNGに書き換えました。
- PNGの保存オプションは、前述のJavaScriptのリファレンスを "PNG" で検索して参照しました。
つかいかた
- 下記のスクリプトをコピーして任意の場所に保存してください。
- Illustrator のメニューから [ファイル]→[スクリプト]→[その他のスクリプト] で、保存したスクリプトを選択してください。
- ダイアログが出るので、それに従って、Illustrator ファイルのあるフォルダ、ファイル名、出力時のサイズの倍率(縦横等比)、出力先フォルダ、を入力してください。
スクリプト
/******************************* IllustratorファイルをPNGに変換する 参考サンプルファイル:/Applications/Adobe Illustrator CS6/Scripting.localized/Sample Scripts.localized/JavaScript.localized/Save as PDFs.jsx リファレンス:http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/illustrator/scripting/cs6/Illustrator-Scripting-Reference-JavaScript.pdf *******************************/ var destFolder, sourceFolder, files, fileType, fileScale, sourceDoc, targetFile, pdfSaveOpts; // 読み込みフォルダをダイアログで選択 sourceFolder = Folder.selectDialog( 'PNGに変換したいIllustratorファイルのあるフォルダを選択してください。', '~' ); if ( sourceFolder != null ) { files = new Array(); fileType = prompt( '対象のファイル名を入力してください。 例: *.ai', ' ' ); fileScale = prompt( '出力時のスケールをパーセンテージで入力してください。 例: 200.0', ' ' ); // マッチするファイルリストの取得 files = sourceFolder.getFiles( fileType ); if ( files.length > 0 ) { // 出力先フォルダをダイアログで選択 destFolder = Folder.selectDialog( '出力先のフォルダを選択してください。', '~' ); for ( i = 0; i < files.length; i++ ) { sourceDoc = app.open(files[i]); // returns the document object // PNG返還後のファイル名を取得 targetFile = getNewName(); // PNG変換オプションの指定 var exportOptions = new ExportOptionsPNG24(); exportOptions.horizontalScale = fileScale; exportOptions.verticalScale = fileScale; exportOptions.artBoardClipping = true; // 変換の実行 app.activeDocument.exportFile( targetFile, ExportType.PNG24, exportOptions ); sourceDoc.close(SaveOptions.DONOTSAVECHANGES); } alert( 'PNGファイルの出力が成功しました。 出力先:' + destFolder ); } else { alert( 'ファイルが存在しません。' ); } } function getNewName() { var ext, docName, newName, saveInFile, docName; docName = sourceDoc.name; ext = '.png'; // new extension for png file newName = ""; for ( var i = 0 ; docName[i] != "." ; i++ ) { newName += docName[i]; } newName += ext; // full pdf name of the file saveInFile = new File( destFolder + '/' + newName ); return saveInFile; }