Windows XP
Adobe Illustrator CS3
Adobe PDFプリセットを使用してPDFへ別名保存後、ファイル内のテキストオブジェクトをすべてアウトライン化して、別名保存します。
ご使用前に、29行目の「[PDF/X-1a:2001 (日本)]」を使用したいプリセットの名前に書き換えてください。PDFへ別名保存する時には、Adobe PDFプリセットを使用しますが、GUIではコントロールできる項目がJavaScriptではコントロールできない場合があります。ご注意ください。
アウトライン化は、非表示・ロックレイヤー、非表示・ロックオブジェクトも処理対象となります。レイヤーの表示状態は保持され、処理完了後はすべてのレイヤーがロックされます。また、テキストオブジェクトの表示状態は保持され、処理完了後すべてのテキストオブジェクトのロックが解除されます。
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // AICS3_AItoPDF&outline_folder.jsx // PDFへ別名保存後、全てのテキストをアウトライン化して別名保存する // // 2011.05.24 ver.1.0 // // System requirements : Adobe Illustrator CS3 13.0.3 Windows XP SP3 // Copyright(c) 2011 Kuro // http://www3.ocn.ne.jp/~art_mac/ // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ var folderObj = Folder.selectDialog("Illustratorファイルの入っているフォルダを選択してください"); var folder = Folder.selectDialog("保存するフォルダを選択してください"); if (folderObj != null){ fileList = new Array; fileList = folderObj.getFiles("*.ai"); for (f = 0 ; f <= fileList.length-1 ; f++){ var fileObj = new File(fileList[f]); open(fileObj); flag = fileObj.open(); if (flag == true){ mydocument = app.activeDocument; // PDF保存 namecount = (fileObj.name).lastIndexOf("."); // fileObj.nameの値で"."の位置を取得 fname = (fileObj.name).substr(0, namecount); options = new PDFSaveOptions(); options.pDFPreset = "[PDF/X-1a:2001 (日本)]"; options.preserveEditability = false; savefile = new File(folder.fsName+"/"+fname+".pdf"); mydocument.saveAs(savefile,options); // レイヤーをカウントする。 layercount = mydocument.layers.length; var visibleflag = []; // レイヤーの表示状態を記憶し、レイヤーの表示、ロック解除を行う。 for( i=0; i<layercount; i++ ){ mylayer = mydocument.layers[i]; visibleflag[i] = mylayer.visible; mylayer.visible = true; mylayer.locked = false; } // テキストフレームをカウントする。 textitems = mydocument.textFrames; textcount = textitems.length; // alert(textcount); // アウトライン化。 for( n=textcount - 1;n > -1;n--){ hiddenflag = textitems[n].hidden; textitems[n].locked = false; if( hiddenflag == false ){ textitems[n].createOutline(); }else{ newitem = textitems[n].createOutline(); newitem.hidden = true; } } // レイヤーの表示状態を元に戻し、ロックする。 for( m=0; m<layercount; m++){ mylayer = mydocument.layers[m]; if( visibleflag[m] == true ){ mylayer.locked = true; }else{ mylayer.visible = false; mylayer.locked = true; } } } namecount = (fileObj.name).lastIndexOf("."); // fileObj.nameの値で"."の位置を取得 fname = (fileObj.name).substr(0, namecount); options = new IllustratorSaveOptions(); options.embedICCProfile=true; savefile = new File(folder.fsName+"/"+fname+"_out.ai"); mydocument.saveAs(savefile,options); activeDocument.close(SaveOptions.DONOTSAVECHANGES); } } alert("処理が完了しました。スクリプトを終了します。");