訪問していただき、ありがとうございます。
llustratorでテキストをアウトライン化する際に、
以下の作業を同時に行いたいと考えたことはありませんか?
・アピアランスも分解したい
・孤立点も削除したい
・空テキストも削除したい
・空レイヤーも削除したい
このような要望を解決するスクリプトを紹介します。
Profile
この記事を書いている私は、DTPデザイナーとしてIllustratorの操作経験が15年以上あり、スクリプトも自分の業務で必要になったものを自ら作成し、デザイン作業の効率化を図っています。
最近では、当ブログでも自作スクリプトを公開しています。
ぜひ、今回紹介するスクリプトを使って作業効率化に繋げてください
それでは、どうぞ
【アウトライン+4】スクリプトの解説

Adobe Stock
アウトライン+4(OutLine+4)は、僕がJavaScriptベースに自作したIllustrator用のスクリプトです。
【アウトライン+4】は、ここが便利
Illustratorデータに、このスクリプトを使うと以下の作業を自動でおこなってくれるので、入稿作業の効率アップに役立ちます。
1.テキストのアウトライン化
2.空テキストの削除
3.孤立点の削除
4.アピアランスの分解
5.空レイヤーの削除
【アウトライン+4】の入手
【アウトライン+4】のスクリプトは、以下の方法で入手できます。
1.下記リンクからスクリプトをダウンロード
DL:OutLine+4.jsx
2.次の章に、掲載されているスクリプトコードをテキストエディタ(メモ帳など)に貼り付けて拡張子「.jsx」で保存
ちなみに、【スクリプトの使い方や作り方】を知りたい方は、、【Illustratorの作業効率が上がる!【スクリプト】の使い方と作り方】の記事を参考にしてください。
【アウトライン+4】の使い方
STEP1.スクリプトを使いたいAIデータを開く
STEP2.スクリプトを起動する
STEP3.実行結果を確認する
テキストがアウトライン化されていれば成功です。
【アウトライン+4】スクリプトコードの紹介

Adobe Stock
前章では【アウトライン+4】の入手方法や使い方などについて解説しました。
この章は、【アウトライン+4】のコードを公開します。
コメントアウトも書いてありますので、カスタムする際の参考にしてください。
var docObj = app.activeDocument;
//レイヤーロック解除ここから
var lays = docObj.layers;
for ( var i = 0 ; i < lays.length ; i++){ //レイヤーの数だけ繰り返す
try{
lays[i].locked = false; //ロック解除
}catch(e){};
};
//レイヤーロック解除ここまで
app.executeMenuCommand("unlockAll"); //すべてのロック解除
//要素をすべて選択ここから
var selObj = docObj.pageItems;
for( var i = 0 ; i < selObj.length ; i++){ //要素の数だけ繰り返す
try{
selObj[i].selected = true; //要素の選択
}catch(e){};
};
//要素をすべて選択ここから
app.executeMenuCommand("expandStyle"); //アピアランスの分解
app.executeMenuCommand("ungroup"); //グループ解除
app.executeMenuCommand("deselectall"); //選択解除
//テキストだけ選択ここから
var txtObj = docObj.textFrames;
for (var i = 0 ; i < txtObj.length; i++){ //テキストの数だけ繰り返す
try {
txtObj[i].selected = true; //テキストの選択
}catch(e){};
};
//テキストだけ選択ここまで
//空テキスト削除 ここから
var sel = docObj.textFrames;
for(var i = 0 ; i < sel.length; i++){
selObj = sel[i];
try{
var n = selObj.contents.length; //テキストの文字をカウント
if(n === 0){ //文字数が0なら
selObj.remove(); //削除
};
}catch(e){};
};
//空テキスト削除 ここまで
//テキストのアウトライン ここから
app.executeMenuCommand("ungroup"); //グループの解除
var selText = docObj.selection; //選択中の要素
for (var i = 0 ; i < selText.length; i++){ //選択中の要素の数だけ繰り返す
if(selText[i].typename === "TextFrame"){ //テキストフレームなら
selText[i].createOutline(); //文字のアウトライン
};
};
docObj.selection = null; //選択解除
//テキストのアウトライン ここから
//ゴミの削除 ここから
var pathObj = docObj.pathItems; //すべてのパスアイテム
for(var i = pathObj.length -1 ; i >= 0 ; i--){ //パスアイテムの数だけ繰り返す
try{
if(pathObj[i].pathPoints.length === 1){ //パスが1個なら
pathObj[i].remove(); //パスの削除
};
if(!pathObj[i].filled && !pathObj[i].stroked){
pathObj[i].remove();
};
}catch(e){};
};
//ゴミの削除 ここまで
//空レイヤー削除 ここから
var layObj = docObj.layers.length;
if(layObj === 1){
alert("レイヤーが一枚なので削除できません");
}else{
for(var i = layObj -1 ; i >= 0; i--){
var d = docObj.layers[i];
var t = d.compoundPathItems.length + d.graphItems.length + d.groupItems.length +
d.legacyTextItems.length + d.meshItems.length + d.pathItems.length +
d.placedItems.length + d.pluginItems.length + d.rasterItems.length +
d.symbolItems.length + d.textFrames.length;
if(t === 0){
d.remove();
};
};
};
//空レイヤー削除 ここまで
免責事項
・このページで配布しているスクリプトを無断で転送・販売・配布することは禁止です。
・アプリケーションのバージョンアップの内容によって利用できなくなる場合がありますのでご了承ください。
・このスクリプトによって起きるいかなる不具合や損害も、責任を負いません。ご利用の際は自己責任にてお願いいたします。
というわけで、今回は以上です。
<【Illustrator】スクリプトで作業効率化!アウトライン+4つのアクション>を
最後まで読んでいただき有難う御座いました。
Illustratorスクリプトのおすすめ書籍!
また、以下の記事で今回紹介した書籍以外にもスクリプトに関する書籍を紹介しているので参考にしてください。