訪問して頂きありがとうございます。
今回は、illustratorを使って図面などを作成している人向けに
- 表題欄を自動で作成してくる方法を知りたい
- 日付だけを差し替えた
- スクリプト機能を使ってみたい
こんな疑問に答えます。
この記事は、DTPデザイナー歴15年以上の私が、illustratorのスクリプト機能を利用してシンプルな表題欄を自動で作成するソースコードを紹介します。
参考にしていただければ毎回、[表題欄]を作る単純作業から開放されますよ
プログラムが苦手な人は、ソースコードを【Adobe ExtendScript Toolkit】や【メモ帳】などにペーストして使ってくだい
[表題欄]を作成する上で必要になる基礎知識はコチラを参考にしてください
● illustratorで【日付を自動取得する】javaScript Code
作成する表題欄のポイント
今回紹介する表題欄のポイントは
・新規で[表題欄]レイヤーの作成
・複数のアートボードに対応
・中身には、タイトルと日付のみ
・日付のみ差し替え可能
※差し替えたくない日付はロックしてください
javaScriptのソースコード
var docObj = activeDocument;
var lays = docObj.layers;
app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;
var fName = app.textFonts["KozGoPro-Regular"];
function setCMYKColor(c,m,y,k) {
var CMYK = new CMYKColor();
CMYK.cyan = c;
CMYK.magenta = m;
CMYK.yellow = y;
CMYK.black = k;
return CMYK
}
var dayZero = function (zero) {
if (zero <10) {
zero = "0" + zero;
}
return zero;
}
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth()+1;
month = dayZero(month);
var date = now.getDate();
date = dayZero(date);
var day = year +"/"+ month +"/"+ date;
try {
var newLay = lays.getByName('表題欄');
try {
var slays = lays['表題欄'];
slays.locked = false;
} catch (e) {}
docObj.selection = null;
var txtCount = docObj.layers['表題欄'].textFrames;
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;
selObj[i].contents = text.replace(/2........./g,day);
}
slays.locked = true;
} catch (e) {
var layObj = lays.add();
layObj.name = '表題欄';
for (var i = 0; i < docObj.artboards.length; i++) {
var rect = docObj.artboards[i].artboardRect;
var left = rect[0];
var top = rect[1];
var right = rect[2];
var bottom = rect[3];
var rectObj = docObj.pathItems.rectangle(bottom+28.398,right-211.334,197.162,14.226);
rectObj.filled = false;
rectObj.stroked = true;
rectObj.storokeWidth = 1;
rectObj.strokeColor = setCMYKColor(0,0,0,50);
var lineObj = docObj.pathItems.add();
lineObj.setEntirePath([[right-94.049,bottom+28.4],[right-94.049,bottom+14.2]]);
lineObj.filled = false;
lineObj.stroked = true;
lineObj.storokeWidth = 1;
lineObj.strokeColor = setCMYKColor(0,0,0,50);
var titleObj = docObj.textFrames.add();
titleObj.contents = 'Title';
titleObj.paragraphs[0].fillColor = setCMYKColor(0,0,0,50);
titleObj.paragraphs[0].characterAttributes.textFont = fName;
titleObj.paragraphs[0].size = 5;
titleObj.left = right-208.956;
titleObj.top = bottom+26.014;
titleObj.createOutline();
var dateObj = docObj.textFrames.add();
dateObj.contents = 'Date';
dateObj.paragraphs[0].fillColor = setCMYKColor(0,0,0,50);
dateObj.paragraphs[0].characterAttributes.textFont = fName;
dateObj.paragraphs[0].size = 5;
dateObj.left = right-91.678;
dateObj.top = bottom+26.014;
dateObj.createOutline();
var textObj = docObj.textFrames.add();
textObj.contents = day;
textObj.paragraphs[0].size = 10;
textObj.paragraphs[0].fillColor = setCMYKColor(0,0,0,50);
textObj.paragraphs[0].characterAttributes.textFont = fName;
textObj.top = bottom+26.014;
textObj.left = right-77.367;
}
var sLayer = lays['表題欄'];
var bottomLayer = docObj.layers[docObj.layers.length-1];
bottomLayer.locked = false;
sLayer.move(bottomLayer,ElementPlacement.PLACEAFTER);
sLayer.locked = true;
}
表題欄を自動作成してくるまとめ
この記事は、illustratorのスクリプト機能で使える javaScriptを利用した表題欄を自動作成してくれるソースコードを紹介してきました。
表題欄は。図面やデザインレイアウトの管理に必要な事項(タイトル、日付、クライアント名、作成者など)を記入する見出しのようなもで、表題欄を毎回、一から作成している人やテンプレートを利用している人もいると思いますが、illustratorのスクリプト機能を利用すれば時短に繋がりますので是非、利用してみてください。
というわけで、今回は以上です。
〈illustratorスクリプト機能で[表題欄]を自動作成してくれるコード〉を最後まで読んでいただき有難う御座いました。
See you later
illustratorの自動化でオススメの書籍
普通のJavaScriptの書籍はWEB制作を前提で書かれているので、Adobe illustratorやphotoshopを制御するには役に立ちずらいです。
そこで、AdobeのApplicationを制御することに特化した書籍を2冊紹介します。
Adobe JavaScriptリファレンス (NextPublishing)
AdobeのApplicationで共通する制御コマンドを網羅的に解説している1冊
illustratorやphotoshopなど特有のコマンドについては解説させていません
Illustrator自動化基本編 (Adobe JavaScriptシリーズ(NextPublishing))
Adobe JavaScriptリファレンスで解説させていないillustratorの特有コマンドを解説している1冊です。
サンプルコードなどが記載されているので、プログラムが苦手な人でもスクリプトを気軽に利用することができます。