root/platform/indesign/fit_text/trunk/fit_text.jsx @ 19667

Revision 19667, 3.0 kB (checked in by CL, 6 years ago)

change idStoryOrientation

Line 
1/*
2filename: fit_text.jsx
3ver. 0.1 初版 http://blog.dtpwiki.jp/dtp/2005/03/indesigncsjavas_1.html
4ver. 0.2
5         テキストフレーム内のすべてのパラグラフで実行
6         縦組・横組で判断して個別対応
7         テキストフレーム内のテキストを選択していた場合に対応
8         TextFrameオブジェクトにメソッドを拡張する形で実装
9ver. 0.3 http://blog.dtpwiki.jp/dtp/2008/09/indesign-javasc.html
10         パラグラフ選択ではなくparentStoryで選択するようにした
11*/
12 
13(function(){
14 
15 
16  //TextFrameオブジェクトにfitTextHolizontalScaleメソッドを拡張
17  TextFrame.prototype.fitTextHolizontalScale = function(limit) {
18    var self = this;
19    for ( var i = 100; i >= limit; i--) { // 100からlimitまで
20                                          // 1ずつ減らす
21      if ( !self.overflows ) break; // あふれ解消したらループ
22                                    // 抜ける
23      self.parentStory.horizontalScale = i;
24    }
25    return;
26  };
27 
28  //TextFrameオブジェクトにfitTextVerticalScaleメソッドを拡張
29  TextFrame.prototype.fitTextVerticalScale = function(limit) {
30    var self = this;
31    for ( var i = 100; i >= limit; i--) { // 100からlimitまで
32                                          // 1ずつ減らす
33      if ( !self.overflows ) break; // あふれ解消したらループ
34                                    // 抜ける
35      self.parentStory.verticalScale = i;
36    }
37    return;
38  };
39 
40  // ストーリーの方向により処理を分岐(実際に呼ぶのは
41  // このメソッド)
42  TextFrame.prototype.fitText = function(limit) {
43    var self = this;
44    var idStoryOrientation ={
45      1752134266: 'idHorizontal',
46      1986359924: 'idVertical',
47    };
48    if (idStoryOrientation[
49          self.parentStory.storyPreferences.storyOrientation
50        ] == 'idHorizontal') {
51      this.fitTextHolizontalScale(limit);
52    } else {
53      this.fitTextVerticalScale(limit);
54    }
55    return;
56  };
57 
58 
59  // メインルーチン
60 
61  // InDesign上で選択中のオブジェクトの一覧を取得
62  var selObjs = app.activeDocument.selection;
63 
64  // 選択しているオブジェクトのコンストラクタを確認して、
65  // フィットするしない判断
66  for (var i = 0; i < selObjs.length; i++) {
67    var selObj = selObjs[i];
68    if ( selObj.constructor.name == 'TextFrame' ) {
69      // テキストフレームだった場合
70      var textFrameObj = selObj;
71      textFrameObj.fitText(10); // 最小10%まで文字つぶす
72    }
73    else if ( selObj.constructor.name == 'Text' ) {
74      // テキストフレーム内のテキストが選択されていた場合
75      // テキストが所属するフレームを選択してfit
76      var textFrameObj = selObj.parentTextFrames[0];
77      textFrameObj.fitText(10); // 最小10%まで文字つぶす
78    }
79  }
80  return; // メインルーチン終わり
81 
82})()
Note: See TracBrowser for help on using the browser.