|
Windows10 indesign CC2021 です。
indesignのデフォルトに入っているimagecatalog.jsxというJavaScriptがありますが、このスクリプトを使って1ページ1枚ずつ配置した画像の下に図説を配置していくスクリプトを作成中です。 1ページ目に図説をまとめて入れたテキストボックスを置き、1段落目は1ページ目の画像下にテキストボックスを生成して配置、2段落目以降繰り返し…という所までは作成できたのですが、 この方法だと元々図説に対して当たっていたスタイルが落ちてしまうので困っています。(ゴチ、上付き下付きなどがあります) 何か良いアイデアをお持ちの方おられないでしょうか?
|
No.10046 2021/02/02(Tue) 10:54:43
Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1
|
Re: JavaScript / Uske_S |
|
|
|
単純にコピペしてみてはどうかな、と思いました。
var doc = app.activeDocument; var txf1 = doc.textFrames[1]; var txf2 = doc.textFrames[0]; var myInsPoint = txf2.insertionPoints[0]; //テキストフレームの先頭 var myPara = txf1.paragraphs[0].select(); //テキストを選択 app.copy(); //コピー myInsPoint.select(); //ペースト先を一度選択 app.paste(); //ペースト
テキストフレームを2つ用意して、片方にテキストを入れて試してみてください。 InDesignのコピーとペースト機能を使っています。 これを応用してみて……どうでしょう?^^;;
|
No.10047 2021/02/02(Tue) 14:24:28
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36
|
|
Re: JavaScript / お〜まち |
|
|
|
図説のテキストをどのようにしてコピーしているのか分かりませんが、テキストのコピーはduplicateメソッドを使います。 書式としてはこんな感じ。 para.duplicate(LocationOptions.AFTER, tfxx.insertionPoints[0]); //para = コピーしたい段落オブジェクト //tfxx = コピー先のテキストフレーム
|
No.10048 2021/02/02(Tue) 17:34:42
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.99 Safari/537.36
|
|
Re: JavaScript / まめちゃん |
|
|
|
Uske_Sさま ありがとうございます、これを使ってみたらほぼやりたい動作でした。 単純なコピーなどもできるのですね、知りませんでした。 気になったのですが、この場合doc.textflame1と0は何が基準で決まっているんでしょうか?テキストフレームを置き直したらうまく動かなくなったため…もし気が向けばご教授頂けますと幸いです。
お〜まち様 自分で作ったものでは、新たにテキストフレームを生成する際にcontentsに元フレームの○段落目を入れた変数を指定していました。 今回の場合元フレームの内容が「図1 〇〇(改行)図2〇〇(改行)…」のように図説が連なっている状態なので、 duplicateも使ってみましたがオブジェクト単位での複製しかできないようだったので断念してしまいました。
|
No.10050 2021/02/06(Sat) 15:11:00
Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Mobile/15E148 Safari/604.1
|
|
Re: JavaScript / お〜まち |
|
|
|
> duplicateも使ってみましたがオブジェクト単位での複製しかできないようだったので断念してしまいました。 テキストでも使えますよ(そもそも問題ないか確認してから投稿してます)。 コードを出してもらえると問題点や修正点を指摘できますので(^^)
|
No.10051 2021/02/06(Sat) 15:59:36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.99 Safari/537.36
|
|
Re: JavaScript / Uske_S |
|
|
|
テキストフレームのインデックス順は、要は重なり順です。レイヤーパネルから上下を入れ替えたり、コピペしたりしてみて動作を確認してみてください。
お〜まちさんのduplicate()メソッドは、おっしゃるとおりオブジェクト単位に使うものです。ひょっとしてcontentsプロパティに対して呼び出しませんでしたか? お〜まちさんのようにParagraphオブジェクトなど、オブジェクト単位で使ってみてください。
>お〜まちさん、僕も勉強になりました〜!ありがとうございます。
|
No.10052 2021/02/08(Mon) 14:26:39
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36
|
|