AI、JavascriptからSVGファイルをエクスポートするもうひとつの方法
ようやく暑さも一段落して季節がまた一つ前に進んだ様な気がする今日のの頃です。皆様におかれましてはご健勝の事とお慶び申し上げる次第でございますが、風邪など召されておられる方々も多いと存じます。季節柄寒暖の差が激しく体調にも影響が出易い季節でございます。どうかご自愛頂ますようお願い申し上げます。
わたし共の庭ではようやく金木犀の蕾が膨らみ始めました。冷え込みを察知してか、檸檬の木に張り付いていたアゲハの幼虫たちもそこかしこを彷徨い歩いた挙句トンデモナイところで蛹になったりしています。あまりにひどいものは回収・保護を行います。一番ひどかったのは駐車場の車の真ん前で行き倒れていた子です。つかんでもツノを出すことも無く、生きているのか死んでいるのかさえ判らない状態でしたがとりあえず保護しました。翌日見てみると蛹になっていました。こいつは本当に彼処で蛹になるつもりだったのだろうか……疑問が残りますがとりあえず結果オーライと言ったところでしょうか。
相も変わらず前置きがムダに長いのですが、通常SVGファイルをAIからスクリプトを利用して書き出す場合はFileオブジェクトにあるexportFileメソッドに対象ファイル・exportType・optionsといった引数を渡してあげます。これとは別にSVGFileFormatプラグインはScript Messageインターフェースを装備しています。そうです。sendScriptMessageメソッドを利用してダイレクトにプラグインをコントロール可能なのです。
このインターフェイスです。
まずは以下のコードを見て下さい。
#include “json2.js”
var fdr = Folder.selectDialog(“Select optput Folder…”);
var opt = {jsonFormatOptions: {}, svgWriterOptions: {}};
opt.jsonFormatOptions.artboards = “artboard”;
opt.jsonFormatOptions.embed = “embed”;
opt.jsonFormatOptions.convertToOutline = false;
opt.jsonFormatOptions.svgPath = fdr.fsName + “/test.svg”;
opt.jsonFormatOptions.logPath = fdr.fsName + “/svgexport.log”;
opt.svgWriterOptions.trimToArtBounds = true;
opt.svgWriterOptions.constrainToDocBounds = false;
opt.svgWriterOptions.isResponsive = true;
opt.svgWriterOptions.minify = false;
opt.svgWriterOptions.styling = “class”;
opt.svgWriterOptions.preserveAspectRatio = “xMidYMid”;
opt.svgWriterOptions.idType = “regular”;
app.sendScriptMessage(“SvgFileFormat”, “exportSVG”, JSON.stringify(opt));
今回はJSONデータを引数に当ててあげる必要がありますので、json2.jsをインクルードしました。こちらは別途ご用意下さい。
sendScriptMessageはアプリケーション直下のメソッドですからこの様な書式で呼び出します。第1引数がプラグイン識別名、第2引数がプラグイン内で呼び出すメソッド名、第3引数がSVG書き出しに関するオプションをJSONにまとめたものを渡します。プログラム的には見るものはありませんので以下にオプションの詳細を掲載しておきます。
Options
artboards[String]……書出し対象
artboard……アクティブなアートボード
document……ドキュメント
selected……選択されたオブジェクト
multiple……それぞれのアートボードを個別のファイルへと書き出し
embed[String]……画像
preserve……保持
embed……埋込む
link……リンク
convertToOutline[Boolean]……フォントのアウトライン化
svgPath[String]……保存ファイルパス(ファイル名・フルパス)
logPath[String]……ログファイルパス(ファイル名・フルパス)
trimToArtBounds[Boolean]……オブジェクトのバウンディングボックスで切り抜き
constrainToDocBounds[Boolean]……ドキュメントのバウンディングボックスで切り抜き
isResponsive[Boolean]……レスポンシブ
minify[Boolean]……SVGのサイズを縮小
styling[String] CSS属性
class……内部CSS
style……インラインスタイル
attribute……プレゼンテーション属性
preserveAspectRatio{String]……アスペクト比・アライメント
none……エリアにフィットする
xMinYMin……TopLeft
xMidYMin……TopCenter
xMaxYMin……TopRight
xMinYMid……MiddleLeft
xMidYMid……MiddleCenter
xMinYMax……BottomLeft
xMidYMax……BottomCenter
xMaxYMax……BottomRight
idType[String]……オブジェクトID
regular……レイヤー名
minimal……最小
unique……固有
注意点として、各ファイル名はフルパスで渡して下さい。特にリテラルで記述する場合は注意が必要です。