Adobe Illustrator でイラストレーターファイルを複数の倍率のPNG画像に一度に書き出すスクリプト
タイトルの通り。
使い方は Adobe Illustrator で JavaScript を使ってバッチを実行する 〜 Illustrator ファイルを PNG に変換するスクリプト - nirasan's tech blog を参照。
出力先フォルダを選択すると、そのフォルダ以下に folders で定義したフォルダ名と倍率でPNG画像が書き出される。
/******************************* 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, folderName, sourceDoc, targetFile, pdfSaveOpts; /* エクスポートするフォルダ(folder)と倍率(scale)のペアを定義する フォルダは存在しない場合自動で作成される */ var folders = [ { folder: "small", scale: 25.0 }, { folder: "medium", scale: 50.0 }, { folder: "large", scale: 100.0 }, ]; // 読み込みフォルダをダイアログで選択 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 (var i = 0; i < files.length; i++ ) { sourceDoc = app.open(files[i]); // returns the document object for (var j = 0; j < folders.length; j++) { fileScale = folders[j].scale; folderName = folders[j].folder; // 保存オプションの取得 var exportOptions = getExportOptions(); // PNG返還後のファイル名を取得 targetFile = getNewName(); // 変換の実行 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 var newFolderName = destFolder + '/' + folderName; var newFolder = new Folder(newFolderName); if (!newFolder.exists) { newFolder.create(); } saveInFile = new File( newFolderName + '/' + newName ); return saveInFile; } function getExportOptions() { // PNG変換オプションの指定 var exportOptions = new ExportOptionsPNG24(); exportOptions.horizontalScale = fileScale; exportOptions.verticalScale = fileScale; exportOptions.artBoardClipping = true; return exportOptions; }