2011年10月18日火曜日

【習作】ラジオボタン

ドキュメント全体のテキストフレーム処理をラジオボタンにしてみた。



var d_Obj=app.dialogs.add({name:"テキストフレーム処理"});
var d_Column=d_Obj.dialogColumns.add();
var rbg=d_Column.radiobuttonGroups.add();
rbg.radiobuttonControls.add({staticLabel:"テキストをBlackに"});
rbg.radiobuttonControls.add({staticLabel:"テキストを正体に"});
rbg.radiobuttonControls.add({staticLabel:"フレームをフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&正体に"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキスト正体&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"全て処理",checkState:false});
d_Obj.show();

var inObj = app.activeDocument;
for(var i=0 ; i<inObj.allPageItems.length; i++) {
if(inObj.allPageItems[i].constructor.name =="TextFrame") {
switch(rbg.selectedButton) {
case 0 : inObj.allPageItems[i].parentStory.fillColor="Black"; break ;
case 1 : inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100; break ;
case 2 : inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 3 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100; break ;
case 4 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 5 : inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100;
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
case 6 : inObj.allPageItems[i].parentStory.fillColor="Black";
inObj.allPageItems[i].parentStory.horizontalScale=100;
inObj.allPageItems[i].parentStory.verticalScale=100;
inObj.allPageItems[i].fit(FitOptions.FRAME_TO_CONTENT); break ;
default : break ;
}
}
}


で、選択アイテムだけを処理するとなると結構ムズイ。
カネムーさんのpageItemsとallPageItemsをパクらせていただきました。
パクっただけで読み解けてません(^^;

var d_Obj=app.dialogs.add({name:"選択テキストフレーム処理"});
var d_Column=d_Obj.dialogColumns.add();
var rbg=d_Column.radiobuttonGroups.add();
rbg.radiobuttonControls.add({staticLabel:"テキストをBlackに"});
rbg.radiobuttonControls.add({staticLabel:"テキストを正体に"});
rbg.radiobuttonControls.add({staticLabel:"フレームをフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&正体に"});
rbg.radiobuttonControls.add({staticLabel:"テキストBlack&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"テキスト正体&フレームフィット"});
rbg.radiobuttonControls.add({staticLabel:"全て処理",checkState:false});
d_Obj.show();

selObjs=app.activeDocument.selection;
groupLoop=function(objs){
for(var i=0; i<objs.length; i++){
var obj=objs[i].getElements()[0];
if(obj.constructor.name=="Group"){
var groupObjs=obj.pageItems;
arguments.callee(groupObjs);
}else{
if(obj.constructor.name=="TextFrame"){
switch(rbg.selectedButton) {
case 0 : obj.parentStory.fillColor="Black"; break ;
case 1 : obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100; break ;
case 2 : obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 3 : obj.parentStory.fillColor="Black";
obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100; break ;
case 4 : obj.parentStory.fillColor="Black";
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 5 : obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100;
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
case 6 : obj.parentStory.fillColor="Black";
obj.parentStory.horizontalScale=100;
obj.parentStory.verticalScale=100;
obj.fit(FitOptions.FRAME_TO_CONTENT); break ;
default : break ;
}
}
}
}
}

groupLoop(selObjs);

2011年10月10日月曜日

【習作】テキストフレームを内容に合わせる

ドキュメント上の全てのテキストフレームがフィットします。
グループ化されたテキストフレームも含む。
var tfObj=app.activeDocument.textFrames;
for(var i=0; i<tfObj.length; i++){
tfObj[i].fit(FitOptions.FRAME_TO_CONTENT);
}

var grObj = app.activeDocument.allPageItems;
for (var i=0; i<grObj.length;i++){
var grTF = grObj[i].textFrames;
for (var j=0; j<grTF.length; j++){
grTF[j].fit(FitOptions.FRAME_TO_CONTENT);
}
}



複数選択した場合(どんな時に使うのか分かりません)
var selObj = app.activeDocument.selection;
for(var s =0 ; s<selObj.length; s++) {
if(selObj[s].constructor.name =="TextFrame") {
selObj[s].fit(FitOptions.FRAME_TO_CONTENT);
}
}

for (var i=0; i<selObj.length;i++){
var grObj=selObj[i].allPageItems;
for (var g=0; g<grObj.length; g++){
if(grObj[g].constructor.name =="TextFrame") {
grObj[g].fit(FitOptions.FRAME_TO_CONTENT);
}
}
}

太字部分を変えればいろいろできる^^ 例えば、
**Obj[*].parentStory.verticalScale = 100;
**Obj[*].parentStory.horizontalScale = 100;
にすればテキストが正体に戻せる。
**Obj[*].parentStory.fillColor = "Black";
にすればテキストがBlackに。

追記:ラジオボタンなら上記の3つ(合わせ処理で計6つ)選べたら便利^^ と思いチャレンジしたが、やり方が悪いのか知らんが、グループテキストフレームと普通のテキストフレーム処理の2つを処理することができなかった。スクリプトで出来るのだからラジオボタンを使ってもできるはずだと思ってる。

再追記:ひとつにまとめられた!
var selObj = app.activeDocument;
for(var s =0 ; s<selObj.allPageItems.length; s++) {
if(selObj.allPageItems[s].constructor.name =="TextFrame") {
selObj.allPageItems[s].fit(FitOptions.FRAME_TO_CONTENT);
}
}

2011年10月8日土曜日

過去ログ10月分のまとめ

2007年10月分(15投稿)
2008年10月分(14投稿)
2009年10月分(6投稿)
2010年10月分(9投稿)

2010年10月のはてなブックマークよりいくつか

Unicode正規化
Safely Composite「文字の濁点や半濁点などがバラバラになっているのを修正する」

ConvertX
ドラッグ&ドロップでファイルの拡張子を一括変更

画像から使用フォントを検索してくれるWEBサービス「myfonts」

Mac OS X 10.6(Snow Leopard)でIllustrator、InDesignを使う際のHelvetica問題
Mac使ってないから、この問題はすぐ忘れる。

正規表現を使ってテキストをいじる3.0

フォントの文字のGIDやUIDを確認する
winにこのようなツールがないのが残念。ちなみにGIDの説明

単位変換
おっと、こいつで思い出した。下記のwebサービスは便利^^
HTMLタグ文字実体参照(文字参照)変換ツール
文字列を数値文字参照に変換
異体字検索
CMYKをDICに変換

[ppi]ブラウザ印刷とスクリーン解像度の不思議な関係
もう一度、読み直す。

フォントインストーラー SAKURA

Tutorial_ハートのパターンを作る

DTPToolBox

まとめてマスク。

ESTKのデータブラウザでプロパティを探す

イラストレーター、InDesign の使い方 - 入門編ガイド

Everything
驚くほど早くファイル検索してくれる。お勧め^^ 以前にもblogにメモしていた気がするがもう一度。