InDesignでは、単に文字やイラスト・イメージの配置だけでなく、四角形や多角形・楕円などを直接配置できます。 これをJavaScriptから操作するにはどうすればいいのか? また、それらの図形オブジェクトの色はどうやって指定するのか?
基本図形は、JavaScriptでは、Rectangle,Polygon,Oval オブジェクトに該当しているようです。
これらは、以下のように、Page インスタンスに対して追加できます。
追加したあと、位置の指定、色の指定などをしていけばOK。
var myDoc = app.documents.add();
var myPage = myDoc.pages.item(0);
var rect = myPage.rectangles.add();
rect.strokeWeight = 1;
rect.geometricBounds = [72,72,172,172];
geometricBoundsで指定している四隅の座標位置ですが、
このままでは、単位がわかりません。
単位の指定は以下のように、ドキュメントのViewPreferenceで指定します。
var myDoc = app.documents.add();
myDoc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDoc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
四角形は作成できたので、適切に色を指定して塗りたい。 どうすればいいか。
var color = myDocument.colors.item("Black");
とすると、黒色を扱えるのだが、
var color = myDocument.colors.item("Red");
としてみると、エラーになる。
Black についてはあらかじめ登録されているようだ。
しかし、好きな色を自分で指定して使うにはどうすればいいのだろう?
InDesignでは、Swatch(スウォッチ)という概念で色やグラデーションを 扱えるようになっている。 あらかじめ登録しておいたスウォッチ名でその色やグラデーションに アクセスする。以下のように...
var mySwatch = myDocument.swatches.item("MySwatchName");
もちろん、いきなりこれを使っても、MySwatchName というスウォッチが 作成されていないので、エラーになる。 Script中で使う場合は、以下のような手順で、事前に登録しておく。
var MYCOLORNAME = "MySwatchName";
var myColor = myDocument.colors.add();
myColor.name = MYCOLORNAME;
myColor.model = ColorModel.process;
myColor.colorValue = [0,100,0,50]; //CMYK
色はRGBで指定したいところだが、CMYKで指定する方法しか わからなかった。(たぶんRGBで指定する方法があるとは思うが)
さらに、もし同じスウォッチ名が登録ずみだった場合に備えて、以下のようなコードを使って色オブジェクトを生成するのが、良いようです。
var MYCOLORNAME = "MySwatchName";
var myColor = null;
if( myDocument.colors.item(MYCOLORNAME)==null ){
myColor = myDocument.colors.add({name: MYCOLORNAME});
//myColor.name = MYCOLORNAME;
myColor.model = ColorModel.process;
myColor.colorValue = [0,100,0,50]; //CMYK
} else{
myColor = myDocument.colors.item(MYCOLORNAME)
}
以上をまとめると以下のようになる。
結果は こちら(pdf)。
myCreateColor.jsx
// create color sample
var MYCOLORNAME = "myColor";
var createMyColor = function(){
var MYCOLORNAME = "MySwatchName";
var myColor = null;
if( myDocument.colors.item(MYCOLORNAME)==null ){
myColor = myDocument.colors.add({name: MYCOLORNAME});
myColor.model = ColorModel.process;
myColor.colorValue = [0,100,0,50]; //CMYK
} else{
myColor = myDocument.colors.item(MYCOLORNAME)
}
return myColor;
};
var myDoc = app.documents.add();
myDoc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDoc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
createMyColor();
var myPage = myDoc.pages.item(0);
var rect = myPage.rectangles.add();
rect.strokeWeight = 1;
rect.geometricBounds = [72,72,172,172];
rect.fillColor = MYCOLORNAME;
InDesign CS3をインストールしたフォルダ以下に、配置します。
./Adobe InDesign CS3/Scripts/Scripts Panel/myCreateColor.jsx
あとは、InDesignCS3を起動して、メニューから [ウインドウ→自動化→スクリプト] を選択、myCreateColor.jsx をリストの一覧から選んでダブルクリックで実行。
ExtendScript のあれこれやをまとめました。興味ある方は、以下のレポジトリもご覧ください。
https://github.com/mindboard/indesign-extendscript