Blog

IllustratorファイルをPDFに保存するJSX

2015年9月3日

自分が楽するためにIllustratorファイルをPDFに保存するJSXを作成しました。

特定フォルダにある拡張子(.ai)をPDFに変換して保存するJSXはあったのですが、入稿データのようにページ単位でフォルダに分かれている場合、使い勝手が悪かったので、フォルダ内を再帰的にサブフォルダがある限り繰り返す処理を加えました。

ソース

var rootFolderObj = Folder.selectDialog("フォルダを選択してください");
var folder = Folder.selectDialog("保存するフォルダを選択してください");
var fList = getAllFile(rootFolderObj, [".ai"]);
// フォント警告などのエラーを出すようにするには下をカットする
app.userInteractionLevel=UserInteractionLevel.DONTDISPLAYALERTS;
// サブフォルダも含めたファイル一覧を取得する関数
function getAllFile(folderObj, ext){
if (!folderObj) return;	// キャンセルされたら処理しない
var list = [];
getFolder(folderObj);
return list;
// フォルダ内の一覧を取得
function getFolder(folderObj){
var fileList = folderObj.getFiles();
for (var i=0; i<filelist.length; f="fileList[i].name.toLowerCase();" if="" j="0;" var=""> -1) { list.push(fileList[i]); }
}
}
}
}
}
for (f = 0 ; f <= fList.length-1 ; f++){
var fileObj = new File(fList[f]);
open(fileObj);
flag = fileObj.open();
if (flag == true){
document = app.activeDocument;
namecount = (fileObj.name).lastIndexOf(".");// fileObj.nameの値で"."の位置を取得
fname = (fileObj.name).substr(0, namecount);
options = new PDFSaveOptions();
options.pDFPreset = "[PDF/X-1a:2001 (日本)]";// Adobe PDFプリセット名
options.preserveEditability = false;
savefile = new File(folder.fsName+"/"+fname+".pdf");
document.saveAs(savefile,options);
}
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
alert("処理が完了しました。スクリプトを終了します。");
</filelist.length;>

注意

フォントがない場合の警告ダイアログを出さない設定にしています。
※都度クリックしないといけないので。
ただ警告が必要な場合は5行目の箇所を削除してください。

重いaiデータが複数ある場合、1個づつ「ファイルを開く」→「PDFで別名保存」とつづいていくので他の作業をする場合少々うざいと思います。
(そしてたぶんすごく時間がかかる)ですので、別マシンで可動させておくことを推奨します。

参考サイト