テキスト入力を自動化するためにIllustrator用のスクリプトを開発したいが、テキストを操作するコードがわからずに困っていませんか?
そこで、今回はIllustratorのテキストに関する基本コードを紹介します。
このコードを学ぶことで、「テキストをアウトライン化」するスクリプトなどを開発することができるようになるので、ぜひ参考にしてください。
それでは、どうぞ!
Profile
この記事を書いている私は、DTPデザイナーとしてIllustratorの操作経験が15年以上あり、スクリプトも自ら作成し、デザイン作業の効率化を図っています。
本ブログでもスクリプトに関する記事を定期的に公開していますので、ぜひご参考にしてください。
関連記事:「完全無料」で作業の効率化!Illustratorスクリプト特集!
早速、テキスト操作に関わるサンプルコードを紹介していきます。
今回、紹介するコードはコチラ
① テキストを配置しするコード
②テキストをアウトライン化するコード
③テキストを置換処理するコード
④特定文字列の検索&該当オブジェクト選択
① テキストを配置しするコード
// 現在アクティブな(開いている)ドキュメントを取得
var docObj = activeDocument;
// 使用するフォントを指定(小塚ゴシック Pro R)
var fName = app.textFonts["KozGoPro-Regular"];
// 新しいテキストフレーム(テキストオブジェクト)をドキュメントに追加
var titleObj = docObj.textFrames.add();
// テキストフレームに表示する文字列を設定
titleObj.contents = 'Title';
// 最初の段落(paragraphs[0])の文字フォントを設定
titleObj.paragraphs[0].characterAttributes.textFont = fName;
// 最初の段落のフォントサイズを5ptに設定
titleObj.paragraphs[0].size = 5;
// --- 位置を指定(左から100pt、上から200pt)---
// Illustratorでは座標は「左上が原点」で、[x, y] で指定(yは下に行くほど減る)
titleObj.position = [100, 200];
// --- 色を指定(赤色に設定)---
// RGBカラーのオブジェクトを作成して fillColor に代入
var redColor = new RGBColor();
redColor.red = 255;
redColor.green = 0;
redColor.blue = 0;
titleObj.textRange.fillColor = redColor;
②テキストをアウトライン化するコード
// 現在アクティブな(作業中の)ドキュメントを取得して、変数 doc に格納
var doc = app.activeDocument;
// ドキュメント内のすべてのテキストフレーム(テキストオブジェクト)を取得
// textFrames は、単純なテキストから複数行のものまで含む配列のようなオブジェクト
var texts = doc.textFrames;
// すべてのテキストを対象にループ(後ろから前へ逆順にループ)
for (var i = texts.length - 1; i >= 0; i--) {
// 各テキストフレームをアウトライン化(createOutline メソッドを使う)
// アウトライン化すると、フォント情報のないパスデータに変換される(文字編集できなくなるが、デザイン的には固定される)
texts[i].createOutline();
}
③テキストを置換処理するコード
// 現在アクティブな(作業中の)ドキュメントを取得して、変数 doc に格納
var doc = app.activeDocument;
// ドキュメント内のすべてのテキストフレーム(テキストオブジェクト)を取得
// docObj はあらかじめ定義されたアクティブドキュメント(activeDocument)オブジェクトを指す
var txtCount = docObj.textFrames;
// すべてのテキストフレームを1つずつ選択状態にするループ
for (var i = 0; i < txtCount.length; i++) {
try {
// テキストフレームを選択状態にする
txtCount[i].selected = true;
} catch (e) {
// エラーが起きた場合(例えばロックされていて選択できないとき)には無視して次に進む
}
}
// 現在選択されているオブジェクトを配列として取得(上記で選択したテキストたち)
var selObj = docObj.selection;
// 選択された各オブジェクトに対して処理を行うループ
for (var i = 0; i < selObj.length; i++) {
// 現在のテキストオブジェクトの文字列を取得
var text = selObj[i].contents;
// 文字列中の "2016" をすべて "今年" に置換(gフラグで全文検索)
selObj[i].contents = text.replace(/2016/g, 今年);
}
④特定文字列の検索&該当オブジェクト選択
// アクティブな(現在開いている)Illustratorドキュメントを取得
var docObj = activeDocument;
// 検索したい文字列を変数に格納(ここを任意の文字列に変更して使う)
var searchText = "検索する文字を入力";
// ドキュメント内のすべてのテキストフレーム(textFrames)を取得
var selObj = docObj.textFrames;
// 各テキストフレームに対してループ処理を行う
for (var i = 0; i < selObj.length; i++) {
// 現在のテキストフレームのテキスト内容を取得
var selCon = selObj[i].contents;
// テキスト内容に searchText が含まれていれば(indexOfで検索)
if (selCon.indexOf(searchText) > -1) {
// 該当するテキストフレームを選択状態にする
selObj[i].selected = true;
}
}
まとめ:Illustratorスクリプトでテキストを操作するコード
この記事では、illustratorスプリクトで使えるテキストを操作するのサンプルコードを紹介してきました。
illustratorを使ううえで[テキストの操作]は、とても使用頻度の高いコマンドの一つですので今回紹介したサンプルコードを活用して作業の自動化に繋げてください
というわけで、今回は以上です。
【illustratorスプリクトで[テキスト]を操るサンプルコード】を最後まで読んでいただき有難う御座いました。
Illustratorスクリプトのおすすめ書籍!
また、以下の記事で今回紹介した書籍以外にもスクリプトに関する書籍を紹介しているので参考にしてください。
この記事へのコメントはありません。