|
OS:Windows7 , アプリ:InDesignCS3 , 言語:JavaScriptです。 質問ばかりで、申し訳ないのですが、 またJavaScriptでの自動組版について、教えていただきたいことがあるのですが、過去記事でも表組ではないですが、複数ページに渡って処理を行うプログラムがあり、それも参考にして行ってみたのですが、行き詰ってしまいました。
// あらかじめ表を作成し行数と列数を必要な数だけ設定すること (function(){ var TAB = String.fromCharCode(9); if (app.documents.length < 1) { alert("あらかじめドキュメントを開いてから実行してください"); return; } var fileObj = File.openDialog("タブ区切りファイルを選択してください"); if (fileObj == null) return; //キャンセルボタンが押されたときは処理しない var flag = fileObj.open("r"); if (flag == false) { alert("タブ区切りファイルが開けません"); return; //ファイルが開けなかったので以後の処理を中止する } var pageNo = parseInt(prompt("割り付ける開始ページを指定してください",1))-1; if ((pageNo < 0) || (pageNo > app.activeDocument.pages.length-1)){ alert("割り付けるページは存在しません"); return; } app.activeWindow.activePage = app.activeDocument.pages[pageNo]; var tfNo = parseInt(prompt("割り付けるテキストフレームを指定してください","")); var pageObj = app.activeDocument.pages[pageNo]; pageObj.textFrames[tfNo].select(); { tableObj = app.selection[0];//自動レイアウトする項目の先頭番号 var i = parseInt(prompt("iの値を入力してください","")); var count = 0; var No = 0; while(fileObj.eof == false){ //ファイルの終わりになるまで繰り返す text = fileObj.readln(); //一行読み込む while(true){ //無限ループ(breakで抜ける) if(pageNo > 2) break; //終了ページを越えていたら無限ループから抜ける var tfObj = app.activeDocument.pages[pageNo].groups; // //if (itemData[0] == "○"){ //掲載フラグがある場合だけ処理を行う var checkFlag = checkTextFrame(tfObj, "buhin"+No); //if (checkFlag == false) break; if (checkFlag) break; else{ pageNo++; //pageNo = pageNo + 1と同じ(次のページへ) } } var itemData = text.split(TAB); //タブコードで区切って配列に入れる while(itemData.length){ for (j=0; j<i; j++){ var contentsObj=itemData.shift(); tableObj.tables[0].columns[count].cells[j].contents = contentsObj; } count++; } } } })();
//割り付けるべきテキストフレームがあるかどうか調べる。あればtrueを返しなければfalseを返す function checkTextFrame(tfObj, tfLabel){ for ( var i=0; i<tfObj.length; i++){ if(tfObj[i].label == tfLabel) return true; } return false; }
今回行き詰ってしまった箇所は、 あらかじめ、複数のページに、0番目のテキストフレームの表組と1番目のテキストフレームの表組を作っておきます。 そして、スクリプトを起動すると、 タグ付きテキストを選ぶ処理をする→ 次に、開始するページを選ぶ→ どのテキストフレームに張り付けるか選ぶ→ 表のi行目まで行くと持ち越して次の列に行くようにする。 となっているのですが、これを、例えば、2ページ目のテキストフレーム[0]にタグ付きテキスト1行目にし、3ページ目のテキストフレーム[0]にタグ付きテキスト2行目にすることは可能なのでしょうか。
var text = fileObj.readln();をfor文でかめばいけるかと思ってたんですが、うまいこと行かなく、行き詰ってしまいました。 どうかよろしくお願いします。
|
No.5394 2010/12/04(Sat) 16:34:25
Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
|