テキストフレームに流し込まれたテキストをすべて正体に戻すJavaScript。
デザイン案を作成したあとにダミーを流してFMT化するときとかに使います。
意図してない長体がかかったままFMT化しちゃうと後で泣けてくるので…。
<仕様>
●テキストフレームを選択している場合は選択しているものを対象に(複数選択可)、
選択していない場合はすべてのテキストフレームを対象にします
●グループは考慮してません下記に修正しました
●ドキュメント全体処理の際にグループされたテキストフレームは考慮してません
ダイレクト選択ツールで選択、およびドラッグして選択してから
スクリプトを起動するとグループされたテキストフレームでも処理できます
Twitterで@ik_osuさんのご指摘を受けて一部スクリプトを修正して、仕様を書き換えています。
使用する方は落とし直してください。
これの表組版とか需要あったりするのかな?
//作業するドキュメントなどを変数に代入var docObj = app.activeDocument;
//選択しているページアイテムを変数に格納
selObj = app.activeDocument.selection;
var textFrameCount = 0 ; //テキストフレームを数えるため
if (selObj.length == 0) {
var wObj = app.dialogs.add({ name:"注意" });
var tmp = wObj.dialogColumns.add();
tmp.staticTexts.add({staticLabel:"ドキュメント全体のテキストフレームを正体にします ", minWidth:120 });
var buttonResult = wObj.show();
wObj.destroy() ;
if (buttonResult == true) { //OKが押されたら
allPage(docObj) ; //ドキュメント全体の処理
} else {//キャンセルが押されたら
alert("処理を中止します");
exit() ;
}
} else {
var wObj = app.dialogs.add({ name:"注意" });
var tmp = wObj.dialogColumns.add();
tmp.staticTexts.add({staticLabel:"選択しているテキストフレームを正体にします ", minWidth:120 });
var buttonResult = wObj.show();
wObj.destroy() ;
if (buttonResult == true) { //OKが押されたら
selectTextFrame(selObj);//選択しているテキストフレームの処理
} else {//キャンセルが押されたら
alert("処理を中止します");
exit() ;
}
}
//ドキュメント全体の処理
function allPage(docObj) {
for (i = 0 ; i < docObj.pages.length ; i ++) {
var myPage = app.activeDocument.pages[i];
for (j = 0 ; j < myPage.pageItems.length ; j++) {
myPage.pageItems[j].select() ;
var checkFrame = app.selection[0] ;
if (checkFrame.constructor.name == "TextFrame") {
textFrameCount ++ ; //テキストフレームの数を数える
for (h = 0 ; h < checkFrame.paragraphs.length ; h ++) {
checkFrame.paragraphs[h].horizontalScale = 100 ; //正体に
}
}
}
}
if (textFrameCount == 0) {
alert("テキストフレームがありません。処理を中止します")
exit() ;
}
alert("全ページのテキストフレームを正体にしました")
}
//選択しているテキストフレームの処理
function selectTextFrame(selObj) {
for (j = 0 ; j < selObj.length ; j++) {
if (selObj[j].constructor.name =="TextFrame") {
textFrameCount ++ ; //テキストフレームの数を数える
for (h = 0 ; h < selObj[j].paragraphs.length ; h ++) {
selObj[j].paragraphs[h].horizontalScale = 100 ;
}
}
}
if (textFrameCount == 0) {
alert("テキストフレームがありません。処理を中止します")
exit() ;
}
alert("選択していた " + selObj.length + " つのうちの " + textFrameCount + " テキストフレームを正体にしました")
}