InDesignCSのJavaScriptで自動組版っぽいことしてみようかなと思った(2)。
スポンサードリンク
選択されたテキストボックスのうち、あふれマークが出ているところの最初のパラグラフに、あふれマークが出ないか、10%長体になるまで長体を掛け続けます。
function choutai(txtObj) {
for (w=100; w >= 10; w--) {
if (!txtObj.overflows) break;
txtObj.paragraphs[0].horizontalScale = w;
}
}
sel = app.activeDocument.selection;
for (i = 0; i < sel.length; i++) {
txtObj = sel[i]
choutai(txtObj);
}
リミットやら、つぶしきれなかったときにダイアログ出すとかはお好みで。
実行例:
図のような、あふれているテキストボックスを選び、スクリプトパレットからスクリプトをダブルクリックします。

▲あふれています
すると、長体がかかって、収まります。

▲シリアル食品かよっ!
~~~
僕が某所で iBook 上で見せてもらった自動で長体かけるやつは、まさに長体をかけているさまが見えるようになっていて、人間がいないのに人間がキーボード操作で長体をかけているような錯覚に陥り、その日の夜はキモくて寝られませんでした。あれは AppleScript でやっているから作業の様子が見られるのかしら。
スポンサードリンク
トラックバック(1)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/883
2)M.C.P.C.~むり・くり~プラスコミュニケーション http://cl.cocolog-nifty.com/dtp/ の中に、JavaScriptがあります。 http://blog.dtpwiki.jp/dtp/2005/03/indesigncsjavas_1.html 私もありがたく使わせていただいています。 ... 続きを読む





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


はじめまして。
最近 InDesign に移行しつつある者です。
文字のオーバーフローで、何か良い自動化処理の方法は無いかと思い、
このページにたどり着きました。
このスクリプト、ありがたく使わせてもらっています。
いくつか質問をさせてもらっていいでしょうか。
現状のスクリプトでは選択したテキストボックス内の、
最初の1行目(パラグラフ)しか長体化してくれないので
こう変えてみました。これで一応はきちんと動作してくれています。
自分はスクリプトに関して初心者で、色々ネットで調べてみてこうやってみました。
が、なにかもっと単純な方法があるんではないかと思えますが、いかがでしょう?
txtObj.paragraphs.lengthをカウントアップしていくのでは無く、
テキストボックス内の改行含むテキスト全体に対して
長体をかける命令みたいなもの、方法、です。
もう一つ質問です。
このスクリプト縦組文字にも対応出来れば使い勝手が凄く良くなると思います。
多分 function 部分をもう一つ増やして、horizontalScale を verticalScale に変え、
下部で if else を使って条件分岐させてやれば実行可能かな、と思っています。
その際、sel[i] つまり txtObj に対して縦組か横組かを聞く if が必要になると思うのですが、
その方法が色々ネットで調べてみたんですが、もう一つ解りません。
質問ばかりで申し訳ないのですが、
よろしかったら御指南いただけませんでしょうか。
いろいろ試してみましたが、TextFrameの中のテキストストーリーを取得するといいようです。
これを使いますと、
for (j = 0; j < txtObj.paragraphs.length; j++) { txtObj.paragraphs[j].horizontalScale = w; }が、
と書き直すことができます。
これに対応すべく新規に書き直しましたのでそちらを参照してください。
http://blog.dtpwiki.jp/dtp/2008/09/indesign-javasc.html
素早い対応、ありがとうございます!
parentStory
ああ、やっぱりここはループさせないでも出来る方法があったんですね。
縦組対応のモノも作って頂いたみたいで、本当にありがたいです。
早速試してみます。
新しいスクリプトも色々自分なりに調べて勉強させていただきます。
繰り返しになりますが、ありがとうございます。