k_ikiの雑記帳

DTPのこと、創作のことなど、思いつくまま

changeBackground.jsx

2012/04/23に改良版アップしました。→ changeBackGround改良版
 
前回の日記について、よく考えたら選択中のオブジェクトを全て背景白(または透明)にする処理の方が、白と透明を交換する処理なんかよりもずっと実用的ですね。
そこで、ラジオボタンによる選択式に書き直してみました。
例によってせうぞー師匠のテンプレートを利用しています。

実行方法:オブジェクトを選択して下記スクリプトをスクリプトパネル上でダブルクリック。
グループとインライングラフィックについては今回も無視。
相変わらず、動作確認は以下の環境だけです。
Mac/WinともCS2以降なら動く可能性もありますが、ご利用は自己責任で。

動作確認環境:Mac OS X 10.6.8/InDesign CS4(6.0.6)
 

/*/////////////////////////////////////////
changeBG改良版
2012.04.20 k_iki

配置済みPDFおよびAI画像の背景について
読み込みオプションダイアログを開くことなく
透明または白に変更して再配置する。

・インライングラフィックは処理しない。
・グループ化されたアイテムは処理しない。
*//////////////////////////////////////////

////////////////////////////////////////////エラー処理 
function myerror(mess) { 
  if (arguments.length > 0) { alert(mess); }
  exit();
}


////////////////////////////////////////////ラジオダイアログ
/*
myTitle	ダイアログ(バー)のタイトル
myPrompt	メッセージ
myList	ラジオボタンに展開するリスト

result	選択したリスト番号
*/
function radioDialog(my_title, my_prompt, my_list){
	var my_dialog = app.dialogs.add({name:my_title, canCancel:true});
	with(my_dialog) {
		with(dialogColumns.add()) {
			// プロンプト
			staticTexts.add({staticLabel:my_prompt});
			with (borderPanels.add()) {
				var my_radio_group = radiobuttonGroups.add();
				with (my_radio_group) {
					for (var i = 0; i < my_list.length; i++){
						if (i == 0) {
							radiobuttonControls.add({staticLabel:my_list[i], checkedState:true});
						} else {
						radiobuttonControls.add({staticLabel:my_list[i]});
						}
					}
				}
			}
		}
	}


	if (my_dialog.show() == true) {
		var ans = my_radio_group.selectedButton;
		//正常にダイアログを片付ける
		my_dialog.destroy();
		//選択したアイテムの番号を返す
		return ans;
	} else {
		// ユーザが「キャンセル」をクリックしたので、メモリからダイアログボックスを削除
		my_dialog.destroy();
	}
}




////実行
if (app.documents.length == 0) {myerror("ドキュメントが開かれていません")}
if (app.selection.length == 0) {myerror("オブジェクトが選択されていません")}

////////////////処理の選択
var myList = ["背景を透明に", 
"背景を白に",];
var ans_int = radioDialog("ChangeBG", "PDF及びAIの背景を変更します\n", myList);
//myList[ans_int];

////////////////メイン処理
(function() {
var mySel = app.selection;
	for (var i=0; i < mySel.length; i++) {
		if (mySel[i].constructor.name !== Group) { //グループ以外のオブジェクトを対象に
			if (mySel[i].contentType !== 1735553140) { //画像フレーム以外は処理しない
			/*
				//k_iki用おぼえがき
				GRAPHIC_TYPE	1735553140	グラフィック
				TEXT_TYPE	1952412773	テキスト
				UNASSIGNED	1970168179	割り当てなし
			*/
				return
				};
			if (mySel[i].graphics.length !== 0 ) {
				var current_link_path = mySel[i].graphics[0].itemLink.filePath;
				var pNum = mySel[i].graphics[0].pdfAttributes.pageNumber;
				if (ans_int == 0) { //背景を透明に	
					app.pdfPlacePreferences.transparentBackground = true;
					}
				else if (ans_int == 1) { //背景を白に
					app.pdfPlacePreferences.transparentBackground = false;
					}
				app.pdfPlacePreferences.pageNumber = pNum;
				mySel[i].place(File (current_link_path));
				}
			}
		}
	})();