InDesign CS4にて、「ある特定の文字をケイ巻きの文字にして欲しい」って依頼があり、悩んだあげくにたどり着いたのが、下記のjavascript。
割と簡単。んで、応用も効くかな…。
1) 元データ
枠囲みしたい文字=テスト
文字スタイル=M100
2) あらかじめ、文字囲みをライブラリに用意。(別に文字囲みだけじゃなく、インラインにしたい物とお考え下さい)
名前も、検索文字と同じにしておきます。
(この場合は「テスト」)
なお、上の画像では見えていないけど、ライブラリの中身は、右に表示されているマゼンタ30%がバックに引いてあるヤツです。
3) javascript実行
下の方のソース参照。
ライブラリの保管場所やファイル名とかは、適宜変更の事。
4) 完成
一応、今回は文字スタイルをかけている物(「M100」っていう文字スタイル)を対象としてます。
-------------------
objDoc = app.activeDocument;
//検索文字列
var keyWord = "テスト";
// テキストの検索形式:オプションはすべてなし。false
app.findTextPreferences = NothingEnum.nothing;
// 検索文字を設定
app.findTextPreferences.findWhat = keyWord;
//検索文字スタイル
app.findTextPreferences.appliedCharacterStyle = "M100";
//検索実行
var objHit = objDoc.findText();
for (i =0; i < objHit.length; i++){
objHit[i].select();
lObj = app.open("C:/テストのライブラリ.indl");
iObj = lObj.assets.item(keyWord);
iObj.placeAsset(app.activeDocument);
}
----------------------
一度、実行してしまうと、元に戻せないっていうのもあるけど、まぁ、あらかじめスクリプトラベルを入れておくって方法で何とかなるかな…?
インラインにしているんで、文字数は変わります。文字数を変えたくないってのは不向き(文書物は不向き)。
あと、行末・行頭にかかるのも不可。
あくまでも、特定の仕事用に作っただけですので、他の事までは考えてません……。
んで、このjavascriptには、何の責任も持てません。
割と簡単。んで、応用も効くかな…。
1) 元データ
枠囲みしたい文字=テスト
文字スタイル=M100
2) あらかじめ、文字囲みをライブラリに用意。(別に文字囲みだけじゃなく、インラインにしたい物とお考え下さい)
名前も、検索文字と同じにしておきます。
(この場合は「テスト」)
なお、上の画像では見えていないけど、ライブラリの中身は、右に表示されているマゼンタ30%がバックに引いてあるヤツです。
3) javascript実行
下の方のソース参照。
ライブラリの保管場所やファイル名とかは、適宜変更の事。
4) 完成
一応、今回は文字スタイルをかけている物(「M100」っていう文字スタイル)を対象としてます。
-------------------
objDoc = app.activeDocument;
//検索文字列
var keyWord = "テスト";
// テキストの検索形式:オプションはすべてなし。false
app.findTextPreferences = NothingEnum.nothing;
// 検索文字を設定
app.findTextPreferences.findWhat = keyWord;
//検索文字スタイル
app.findTextPreferences.appliedCharacterStyle = "M100";
//検索実行
var objHit = objDoc.findText();
for (i =0; i < objHit.length; i++){
objHit[i].select();
lObj = app.open("C:/テストのライブラリ.indl");
iObj = lObj.assets.item(keyWord);
iObj.placeAsset(app.activeDocument);
}
----------------------
一度、実行してしまうと、元に戻せないっていうのもあるけど、まぁ、あらかじめスクリプトラベルを入れておくって方法で何とかなるかな…?
インラインにしているんで、文字数は変わります。文字数を変えたくないってのは不向き(文書物は不向き)。
あと、行末・行頭にかかるのも不可。
あくまでも、特定の仕事用に作っただけですので、他の事までは考えてません……。
んで、このjavascriptには、何の責任も持てません。