Mon, February 18, 2008
はじめてのInDesign CS3 JavaScript, テーブルの作成(その3 ヘッダを追加)
InDesignのテーブルにはheaderRowという概念があるので、 myTableWithHeader.jsx に、それを追加してみました。 おそらくは、テーブルがページをまたいだ場合は、ヘッダが自動的に付加される とか?そういううれしい機能があるのではないかと。
ヘッダ付のテーブルを生成するJavaScript
ヘッダ行一行をプラスした
5x5のテーブルを生成します。
結果はこちら(pdf)。
横幅は、
ページサイズを計算して、ちょうどぴったり収まるように
各セルの大きさを計算しています。
// my table with header
init();
function init(){
//
var myDoc=app.documents.add();
var myPage=myDoc.pages.item(0);
var myTextFrame=myPage.textFrames.add();
var myBounds = myGetBounds(myDoc,myPage);
myTextFrame.geometricBounds=myBounds;
// create table(5x5) object in textframe
var myTable=myTextFrame.tables.add();
myTable.headerRowCount = 1;
myTable.columnCount = 5;
myTable.bodyRowCount = 5;
// calc tabel cell size
var gap=1;
var w=myBounds[3]-myBounds[1]-gap;
var h=myBounds[2]-myBounds[0]-gap;
var cellW=w/myTable.columnCount;
//var cellH=h/myTable.bodyRowCount;
//build table header
var myHeaderRow=myTable.rows.item(0);
myHeaderRow.fillColor=myDoc.colors.item("Black");
myHeaderRow.fillTint=30;
// set up size to cells
for(var i=0; i<myTable.bodyRowCount+myTable.headerRowCount; i++){
var myRow=myTable.rows.item(i);
for(var j=0; j<myTable.columnCount; j++){
var myCell=myRow.cells.item(j);
myCell.width=cellW;
//myCell.height=cellH;
if(i==0){
myCell.contents="header ("+i+","+j+")";
}
else{
myCell.contents="hoge ("+i+","+j+")";
}
}
}
}
function myGetBounds(myDoc, myPage){
with(myDoc.documentPreferences){
var myPageHeight = pageHeight;
var myPageWidth = pageWidth;
}
with(myPage.marginPreferences){
var myTop = top;
var myLeft = left;
var myRight = right;
var myBottom = bottom;
}
myRight = myPageWidth - myRight;
myBottom = myPageHeight- myBottom;
return [myTop, myLeft, myBottom, myRight];
}
ポイント
テーブルオブジェクトに対して、ヘッダ行数を指定。
myTable.headerRowCount = 1;
ヘッダ行の背景色を黒に指定し、30%の透明度で塗る。
var myHeaderRow=myTable.rows.item(0);
myHeaderRow.fillColor=myDoc.colors.item("Black");
myHeaderRow.fillTint=30;
使い方
InDesign CS3をインストールしたフォルダ以下に、配置します。
./Adobe InDesign CS3/Scripts/Scripts Panel/myTableWithHeader.jsx
あとは、InDesignCS3を起動して、 メニューから[ウインドウ→自動化→スクリプト]でスクリプトウインドウが出てきて、 myTableWithHeader.jsxをリストの一覧から選んでダブルクリックで実行。