毎日のDTPを少しだけ便利にする道具たち。同じ作業の繰り返しやルーチンワーク。本当はPCの方が得意な仕事って、意外とたくさんある。スクリプトなど簡単なツールで、毎日をちょっと便利にしていこう。
JavaScript for Adobe Illustrator

PDFへ別名保存後、
全てのテキストをアウトライン化して
別名保存する

Windows XP

Adobe Illustrator CS3

PDFへ別名保存後、
全てのテキストをアウトライン化して
別名保存する

更新日:2011年5月24日(火)
制作環境:Windows XP・Adobe Illustrator CS3

Adobe PDFプリセットを使用してPDFへ別名保存後、ファイル内のテキストオブジェクトをすべてアウトライン化して、別名保存します。

ご使用前に、29行目の「[PDF/X-1a:2001 (日本)]」を使用したいプリセットの名前に書き換えてください。PDFへ別名保存する時には、Adobe PDFプリセットを使用しますが、GUIではコントロールできる項目がJavaScriptではコントロールできない場合があります。ご注意ください。

アウトライン化は、非表示・ロックレイヤー、非表示・ロックオブジェクトも処理対象となります。レイヤーの表示状態は保持され、処理完了後はすべてのレイヤーがロックされます。また、テキストオブジェクトの表示状態は保持され、処理完了後すべてのテキストオブジェクトのロックが解除されます。

a007_AICS3_AItoPDFoutline.zip(2.40KB)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// 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("処理が完了しました。スクリプトを終了します。");
inserted by FC2 system