セル幅を内容に合わせる

[5985]セル幅を内容に合わせる | 投稿者:がちゃぴん | 投稿日:2011/08/04(Thu) 16:56:06
Mac OS10.5.8 CS3です。

「フレームを内容に合わせる」のように、
表のセル幅も内容に合わせることは可能でしょうか?

カタログ等のスペックを作成しているのですが、
「それぞれの項目のアキを2mmにする」
という指示が来てしまいました。
添付した画像は試しに使うであろう項目を作ってみたものです。
(実際は一つの表にここまで入りませんが)
セルの左右のインデントを1mmずつ入れて2mmアキになるようにしてあります。
今回、スペックの内容もバラバラなのでどうしても可変になってしまいます。
attached image
» 1
[5989]Re: セル幅を内容に合わせる | 投稿者:mg | 投稿日:2011/08/05(Fri) 10:32:01
そもそも、その指示自体に疑問も残るのですが
やろうとしてる事自体は下記のコードで出来るとおもいます

var sel = app.selection[0];
if (sel.hasOwnProperty('cells')) {
 // selection 選択した列のみに適用
 main(sel, 2);
};

function main (sel, margin) {
 var col = sel.columns;
 for (var i=0, iL=col.length; i < iL ; i++) {
   var cel = col[i].cells;
   var ar = [];
   for (var j=0, jL=cel.length; j < jL ; j++) {
     var os_start = cel[j].lines[0].insertionPoints[0].horizontalOffset;
     var os_end = cel[j].lines[0].insertionPoints[-1].horizontalOffset;
     ar.push(os_end - os_start);
   };
   col[i].rightInset = col[i].leftInset = margin * 0.5;
   var padding = col[i].rightInset + col[i].leftInset;
   var line_weight = col[i].rightEdgeStrokeWeight * 0.5 + col[i].leftEdgeStrokeWeight * 0.5;
   col[i].width = ar.sort(function(a,b){return b > a})[0] + padding + line_weight;
 };
}
» 2
[5990]Re: セル幅を内容に合わせる | 投稿者:がちゃぴん | 投稿日:2011/08/05(Fri) 12:24:09
mg様

どうもありがとうございました!できました!

デザイナーではなく、クライアントの担当者が
色々とこだわっているようでして、
指示書もInDesignで作られていたものが来ました。

私もこんなに細かい指示をもらったのが初めてだったので途方に暮れていました。


本当に助かりました。ありがとうございました。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)