大量のイラレファイル(.ai)からテキストデータを抜き出したいということがあったので、備忘録を兼ねた記事です。
CONTENTS
スクリプトで自動化してみた
ひとつひとつ手作業で文字をコピーしていたら腱鞘炎&日が暮れそうだったので、自動で処理ができるようにスクリプトを書いてみました。
まずIllustratorやPhotoshopですが、自動処理機能があります。
(他のAdobe製品でも使えるかもしれないですが未確認)
今回はイラレでjsxファイルを使った自動処理の方法をやってみました。
処理の流れについて
jsxというとあまり馴染みがないですが、中身はJavaScriptです。 コードをメモ帳などで書き保存した後、ファイル形式を.jsxにすればOKなので 特別なエディタが無くても初心者の方でもコピーで使えます。 処理内容はこんな感じ(処理したいaiファイルが同じフォルダ内にあると仮定)
- 処理したいフォルダを選択する
- aiファイルを順番に処理、テキスト情報を抜き出す
- テキスト情報をテキストファイル(.txt)にaiファイルと同じ名前を付けて同フォルダ内に保存
- aiファイルを閉じる
事前準備
実際は処理したいファイルが別にありましたがそちらのスクショは使えないので、適当なファイルを作成して説明します。
このようにテキストを2つ挿入し、スクリプトでの抜き出しはできませんが比較用にアウトライン化したテキストも入れてみました。 ファイル名は「サンプルファイル①」とし、全く同じ内容のファイル「サンプルファイル②」も用意しました。 この2つのファイルはデスクトップ上の「処理したいファイル」フォルダに入れてあります。
スクリプトコード
書いたコードはこんな感じです。
// フォルダのパスを指定
var folder = Folder.selectDialog("処理を実行するフォルダを選択してください");
if(folder) {
var files = folder.getFiles("*.ai");
// ①画像リンクが見つからない場合はスキップ
app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
for (var i = 0; i < files.length; i++) {
var file = files[i];
var doc = app.open(file);
var extractedText = []; //テキスト情報を格納
// ②テキストフレームを検索してテキスト情報を抽出する
for (var j = 0; j < doc.textFrames.length; j++) {
extractedText.push(doc.textFrames[j].contents);
}
// ③AIファイル名取得
var filePath = doc.fullName;
var fileName = filePath.name.split(".")[0];
// ④テキストファイルとして保存
var savePath = filePath.path + "/" + fileName + ".txt";
var saveFile = new File(savePath);
saveFile.open("w");
// ⑤配列を逆並びにして改行を追加
var extractedText = extractedText.reverse();
var result = extractedText.join("\n");
saveFile.write(result); //テキストに書き出し
saveFile.close();
doc.close(SaveOptions.DONOTSAVECHANGES);
}
// ⑥画像リンク確認スキップを元に戻す
app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS;
}
各コードの簡単な説明
①画像ファイルなどが埋め込まれていないaiファイルを開く場合警告ダイアログが表示されますが、これが表示されるといちいち処理が止まってしまうので、この表示を出さないような設定に変更しています。
②テキスト情報を抜き出しています。テキストはファイル内の上にあるものから順番に抜き出されます。
③テキストファイルのリネーム用にaiファイルのファイル名を抜き出し。
④テキストファイルを生成します。
⑤抜き出したテキストをそのまま書き出しするとテキスト上では順番が逆になってしまうので、配列の順番を逆にしています。
⑥①の設定を元に戻します。
書いたスクリプトをイラレで動かす!
作成したjsxは分かりやすい名前を付け、イラレのスクリプトフォルダに格納します。
私の環境ではスクリプトフォルダは以下の場所にありました。
C:\Program Files\Adobe\Adobe Illustrator 2023\Presets\ja_JP\スクリプト
フォルダにjsxファイルを格納しイラレを起動している場合は再起動すると、保存したスクリプトを使えるようになります。
フォルダを選択すると
こんな感じでテキストファイルが生成されます。
内容はこんな感じ。 やはりアウトライン化したものは無理ですが、それ以外はバッチリテキスト抜き出しが出来ていますね!
アウトライン化したものも抜き出したい!ということも多々あると思うので
時間があれば次回挑戦してみたいと思います。