2009/11/29

表の自動調整

大分前に表の自動調整のスクリプトを書いたのだが、文字数×フォントサイズでセルの幅を算出していて、欧文フォントのみの表の場合だとその算出方法では幅が合わないので修正。

考え方としては列ごとに各セルを調べて、文字列の最初から最後の幅の最大値を列幅とするもの。

//表のあるフレームを選択
var myTable = app.activeDocument.selection[0].tables[0];
var left, right, max, width;

//列ごとに各セルを調べる
for(var i=0; i<myTable.columns.length; i++) {
max = 0;//文字列の幅の最大値、列ごとに初期化
for(var j=0; j<myTable.columns[i].cells.length; j++) {
var myCell = myTable.columns[i].cells[j];
left = myCell.insertionPoints[0].horizontalOffset;//文字列の左端の位置
right = myCell.insertionPoints[-1].horizontalOffset;//文字列の右端の位置
width = right - left + myCell.leftInset + myCell.rightInset;//セルのマージンも計算に入れとく
if(max<width) max = width;
}
myTable.columns[i].width = max + margin;
}


という感じで列幅が文字列の幅にぴったり合う。
が、文字列が二行になってる場合とか、オーバーフローしてる時とかのケースも考える必要があるな。。。

1 件のコメント:

Boris さんのコメント...

whot is margin?