Indesign

2015年3月26日 (木)

Indesign のテキストフレームのコンテントを全て読み出す

Inesign の テキストフレームの内容を取り出すには、テキストフレームオブジェクトの
contentsで取り出すことができる。しかし、テキストフレームのcontentsではオーバーセット
がある場合その部分は取り出すことが出来ない。
このため読み出したデータをクリアしてオーバーセットされているデータを読み出したりを考えてみた。この場合文字に設定される属性などが消えてしまう。
テキストフレームの親オブジェクトにStoryがありここから全てのコンテントを読み出すことが出来る。
選択されているテキストフレームのストーリーのコンテントを取得するには以下のように記述する

var textFrameObj = app.activeDocument.selection[0];
var storyContent = textFrameObj.parentStory.contents;
alert(storyContent);

2015年3月 9日 (月)

Indesign JavaScript Fileオブジェクト

// Fileオブジェクトからパス名やファイル名を取り出す
var a = new File('C:/Users/xxxx/Desktop/a.jsx');
var a0 = a.path;  // ~Desktop'
var a1 = a.name;  // 'a.jsx'
var a2 = a.path + '/' + a.name.split('.')[0];  // '.' フォルダ名があると正しく動作しない。
alert(a0 + '\n' + a1 + '\n' + a2);

2014年12月 3日 (水)

Indesign JavaScript 表組みの枠線

Indesign の表組みを JavaScript で表の境界線を操作する場合うまく設定できない場合がある。
表の一番外の線は表の境界線と境界線に接するセルの枠線の設定が影響する。

表の境界線を設定するのは以下のようにする。*top部をbottom、left、rightにかえ4方を設定する。
    tblObj.topBorderStrokeWeight   ="5pt";

セルの枠を設定するのは以下のようにする。*top部をbottom、left、rightにかえ4方を設定する。
    tblObj.rows[0].cells[3].topEdgeStrokeWeight    = "15pt";

上記を使用するときの注意としては
・「表」、「表の属性」、「表の設定」、「表の境界線」、「線幅」を一度設定する必要がある。
・セルの枠線の設定が表の枠線の設定より優先する様だ。

セルの枠線で表の境界線を設定した方が良いかもしれない。

2014年10月16日 (木)

JavaScript でクラスを使う

/* JavaScript でクラスを使う */

/* JavaScript では関数オブジェクトがクラスとなるらし */
var AbcObj = function(){};
/* これを実体化すると */
var abc = new AbcObj();

/* 無名関数がそのままコンストラクタになる */
var AbcObj = function(){alert("Hello Abc");};
var abc = new AbcObj();

/* プロパティはコンストラクタにthis.を付けた変数を定義 */
var AbcObj = function(){this.abc="ABC";};
var abc = new AbcObj();
alert(abc.abc);

/* メソッドはプロパティに関数を代入 */
var AbcObj = function(){
    this.abc="ABC";
    this.func=function(s){alert(s);};
};
var abc = new AbcObj();
abc.func(abc.abc);

/* Adobe ExtendScript Toolkit にて動作確認しました */

2014年10月10日 (金)

正規表現でデータ抜けを整形

正規表現でデータ抜けを整形

(A,B,,D,,)(,,,,)〔E,F,,G,〕〔,,,,〕を次のように整形したい
(A,B,D)〔E,F,G〕

3回で実現する

1.「カンマ」の連続を1つにする
/,,+/,/

2.「カンマ」「かっこ閉じ」を「かっこ閉じ」にする
/,([[)][〕]])/$1/

3.空のかっこを取り除く
/()|〔〕//

2014年10月 1日 (水)

Indesign JavaScript テキストボックス処理

//1ページの最初のテキストフレームの全ての文字を表示する
alert("全ての文字:"+app.activeDocument.pages[0].textFrames[0].contents);

//1ページの最初のテキストフレームの最初の文字を表示する
alert("最初の1文字:"+app.activeDocument.pages[0].textFrames[0].characters[0].contents);

// 最初から3文字表示する
alert("最初の3文字:"+app.activeDocument.pages[0].textFrames[0].contents.substr(0,3));

//最初の文字を入れ替える
app.activeDocument.pages[0].textFrames[0].characters[0].contents="X";
alert(app.activeDocument.pages[0].textFrames[0].contents);