表テキストの自動長体

最終更新日

どうも。
InDesignで何ページにもわたる表流し込みをした際、文字溢れが大量にあって大変だったので書いてみました。

アクティブになってるドキュメントの全ページ全表テキスト内の溢れた文字列が収まるまで長体かかります。
収まるまでとはいいますが、あんまり細くなりすぎると嫌なので、2行目で限界%値を設定してます。
限界値までいくと溢れててもそれ以上長体されないのでご注意。

    (function (){
	var limitPer = 60; //60%を限界値にする
	var docObj = app.activeDocument;
	for (var a=0; a<docObj.pages.length; a++)
	{
		var pageObj = docObj.pages[a];
			for (var k=0; k < pageObj.textFrames.length; k++)
			{
			var textObj = pageObj.textFrames[k].select();
			var textboxObj = pageObj.textFrames[k];
			for (var n=0; n<textboxObj .tables.length; n++)
			{
				var tableboxObj = textboxObj.tables[n].select();
					var tableObj = app.activeDocument.selection;
					var rowObj = tableObj[0].rows;
					for (var i=0; i<rowObj.length; i++)
					{
						var cell = rowObj[i].cells;
						for (var j=0; j<cell.length; j++)
						{
							cellObj = cell[j];
							while (cellObj.overflows == true) {
								cellObj.texts[0].horizontalScale--;
								//表組の再構築
								tableObj[0].parent.recompose();
								if (cellObj.texts[0].horizontalScale <= limitPer) {
									break;
									}
								}
							}
						}
					}
				}
			}

})();

ちなみに「表セル内で改行があって特定の行だけが溢れてた」という場合でもセル単位で長体かけてるので、収まってる行も長体されます。
1セル内に1行しか入らないときにおすすめです。
そのうち行単位で長体かけられるやつを書いてみます。

シェアする