|
はじめまして。
InDesign CS4を使い始めたばかりなのですが、 学校のコース案内100ページ(コース数は200個ほど)を作ることになりました。
InDesignでの制作について2つ質問があります。
1つ目は、 200個あるコースに色違いで同じ形の枠を付けたいのですが、枠の形がまだ確定していません。 (数種類提出して決めていただいています)
入稿の期限日があるため作業を進めなくてはならず、オブジェクトライブラリに登録した枠を200コース分、配置したのですが、配置した枠のデザインが決定した時に一気に変更する方法はありますか? (オブジェクトライブラリに登録した枠はグループ化したオブジェクトです。)
2つ目は、 枠の形によっては、コース名の入っているテキストボックスのみの横幅を変える必要があります。 テキストの流し込みは終わっているのですが、テキストボックスの横幅を一気に同じ大きさに変更する方法はありますでしょうか? (コース名はほかの部分とフォントサイズが異なります)
始めたばかりでjavascriptは使ったことがありません。 javascriptで出来ることであれば、頑張ってやってみたいと思っています。 よろしくお願いいたします。
|
No.5821 2011/05/31(Tue) 17:17:52
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
|
Re: オブジェクトの変更 / 五月 貴 |
|
|
|
私もJavaScriptはこちらの皆さんのお力を借りてなんとか作業している程度なのであまり大掛かりなことはできませんが, 「枠」というのはillustratorで作った貼付け画像でしょうか? それともInDesignで作ったものでしょうか?
ご様子からすると流し込んでいるページを最初から最後まで管理し続けなければいけないようですが,そういった内容のスクリプトを書くのは未経験ではなかなか難しいと思います。 たとえ200件でも,プログラムを考えている間に作業してしまった方が早く終わってしまうことも決して少なくはありませんので,人海戦術のご検討も必要かと思います。
|
No.5822 2011/05/31(Tue) 18:46:21
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 YTB730
|
|
Re: オブジェクトの変更 / えふた |
|
|
|
五月様ありがとうございます!!
>「枠」というのはillustratorで作った貼付け画像でしょうか? >それともInDesignで作ったものでしょうか?
InDesignで作ったものです。線と矩形(塗り、線有り)で制作したものです。
やはり、すべて手作業でやるしかないのでしょうか…。
|
No.5825 2011/05/31(Tue) 21:01:50
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
|
|
Re: オブジェクトの変更 / にゃす |
|
|
|
1つ目 Illustrator等を配置するのが良さそうな気がします
2つ目 コース名の入ったテキストフレームのQ数が13Qで、 そのフレーム幅を100mmにすると仮定して、
var courseNameSize = 13; // テキストフレームの1文字目の大きさが13Q var W = 100; // テキストフレームを100mmにしたい var X1,Y1,X2,Y2; var actDoc = app.activeDocument; for(var i=0; i<actDoc.allPageItems.length; i++) { if(actDoc.allPageItems[i].constructor.name == "TextFrame" && actDoc.allPageItems[i].characters[0].pointSize == courseNameSize) { Y1 = actDoc.allPageItems[i].visibleBounds[0]; X1 = actDoc.allPageItems[i].visibleBounds[1]; Y2 = actDoc.allPageItems[i].visibleBounds[2]; X2 = actDoc.allPageItems[i].visibleBounds[1] + W; actDoc.allPageItems[i].visibleBounds = [Y1, X1, Y2, X2]; } }
こんな感じで何となく出来そうな気がしますが
|
No.5826 2011/05/31(Tue) 21:58:46
Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
|
|
Re: オブジェクトの変更 / えふた |
|
|
|
にゃす様ありがとうございます!! 1つ目はイラストレータという手もあるんですね。 テンパってしまって気づきませんでした。 FireworksやFLASHにあるシンボルのような機能があれば便利だと思ったのですが…。
2つ目はスクリプトを試してみました。 大変たいへん申し訳ありませんが、再度教えていただけますでしょうか。
実行すると エラー番号:45 エラー文字列:オブジェクトが無効です 行:6 ソース:if(actDoc.allPageItems[i].constructor.name == "TextFrame" && actDoc.allPageItems[i].characters[0].pointSize == courseNameSize) {
とエラーが出てしまいます。 調べてみたのですが、よくわかりませんでした。 よろしくお願いいたします。
|
No.5828 2011/06/01(Wed) 16:06:54
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; ja-JP-mac; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
|
|
Re: オブジェクトの変更 / にゃす |
|
|
|
あくまでも想像ですが、空のテキストフレームがあるのかもしれません。判定で文字列の無いテキストフレームは飛ばすようにしてみました。 うまくいくと良いのですが。
var courseNameSize = 13; // テキストフレームの1文字目の大きさが13Q var W = 100; // テキストフレームを100mmにしたい var X1,Y1,X2,Y2;
var actDoc = app.activeDocument; for(var i=0; i<actDoc.allPageItems.length; i++) { if(actDoc.allPageItems[i].constructor.name == "TextFrame" && actDoc.allPageItems[i].characters.length >= 1 && actDoc.allPageItems[i].characters[0].pointSize == courseNameSize) { Y1 = actDoc.allPageItems[i].visibleBounds[0]; X1 = actDoc.allPageItems[i].visibleBounds[1]; Y2 = actDoc.allPageItems[i].visibleBounds[2]; X2 = actDoc.allPageItems[i].visibleBounds[1] + W; actDoc.allPageItems[i].visibleBounds = [Y1, X1, Y2, X2]; } }
|
No.5829 2011/06/01(Wed) 17:14:19
Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
|
|