回答受付中の質問
こんばんわ。
初めて質問致します。
自分は、趣味でイラレをたしなむ程度なのですが
今回、知り合いから「ライブのチケット100枚作ってほしい」
と言われました。
デザインは何とか完成し、印刷しようと思ったのですが
「チケットだからナンバリングもつけて欲しい」と要望があり
途方に暮れています。
自力でネット検索し、何とかナンバリングをしてくれる「javasprict」
を発見致しました。
早速試したところ、チケット1枚につきナンバリング1か所であれば
成功したのですが、チケットなので控えと半券両方にナンバリングが欲しいとの事。
つまり、簡単に言うと1枚に2か所のナンバリングが必要なのです。
自分で改造しようと、色々試しましたが完全にお手上げ状態です。
何とかお力添えを頂ければ幸いです。
ソースは下記の通りです。
// JavaScript Document
docObj = activeDocument;
var minNum=prompt("チケットナンバーの開始値");
var maxNum = prompt("チケットナンバーの終了値");
var ticketsPerPage = 5; //一ページ当たりのチケット枚数
var printPageNum = Math.ceil( (maxNum - (minNum-1))/5 ); // 何ページ印刷するか
var maxDegit = 4; //最大桁数。これに基づいて、テキスト整形
var prefix = "抽選番号 No. "; //連番のプリフィックス
var suffix = " "; //連番のサフィックス
for(var i = 0 ; i < printPageNum ; i++){ //必要なページ数ループ
for(var h = 0 ; h < ticketsPerPage ; h++){ //各ページにはticketPerPageだけナンバーを設定
var obj_name = "No."+(h+1); //テキストオブジェクトの名前(事前にaiファイルで編集・設定)
var numberItem = docObj.pageItems.getByName(obj_name);//テキストオブジェクトの取得
numberItem.contents= getNumberText(i*ticketsPerPage + Number(minNum)+ Number(h)); //ナンバーを設定
}
//プリント
docObj.print();
}
//数値を受け取って、ナンバリング用文字列を返す
function getNumberText(num){
var len = num.length;
var numText = prefix;
for( var i = 0 ; i < maxDegit - len ; i++){
numText += " ";
}
numText += num;
return numText + suffix.toString();
}
上記の物を、同じテキストボックス名を2か所設置して動かしても片方にしか
ナンバリングが反映されませんでした。
まったくの初心者ですので、御面倒おかけしますが何卒お力添えをお願い致します!
投稿日時 - 2011-07-11 20:48:12
1人が「このQ&Aが役に立った」と投票しています
回答(1件中 1~1件目)
イラレのスクリプトはわからないので、考え方のみになってしまいますが…
>上記の物を、同じテキストボックス名を2か所設置して動かしても片方にしか
>ナンバリングが反映されませんでした
同じ名前でなく、名前を変えてあげれば良さそうに思われます。
例えば片方が「No.{番号}」のようになっていれば、もう一方は「sNo.{番号}」のように設定しておけばよろしいかと。
記入するスクリプトは
//記入する文字列
var record = getNumberText(i*ticketsPerPage + Number(minNum)+ Number(h));
//テキストオブジェクト1の取得
var numberItem1 = docObj.pageItems.getByName( "No."+(h+1));
var numberItem2 = docObj.pageItems.getByName( "sNo."+(h+1));
//ナンバーを設定
numberItem1.contents= record;
numberItem2.contents= record;
のように2箇所に同じ文字を記入してあげれるようにすればよいのではないでしょうか。
投稿日時 - 2011-07-11 21:40:54
OKWaveのオススメ
おすすめリンク