InDesignでJavaScript その13。
どっかの掲示板で「画像のリンクを一括で置換したい」というのを見て、たまたま今回の仕事で似たようなものを書いたので、アップしてみる。
関数だけあげておくので、後は適当に。
私はお得意のDBファイルを読み込んで全ファイル処理って形で使ってます。
この関数とfor文を組み合わせれば上記の要望もクリアできるか、と。
エラーログに関しては現状hogeと書き込まれるだけで意味をなしませんが、ドキュメントの名前を返すようにすると一応意味があると思います。
私は該当ファイルのフルパスを記述するようにしています。
ただ注意点。
このJavaScriptは画像を「置き換える」ものなので、リスクは高いです。
校正しないと危ないと思いますです。
/*
★画像置換.jsx★
☆ver.1.0☆
Copyright [偽善者こうちゃん]
[2007.03.01] {
ver.1.0作成
}
画像フレームを選択して
置換したいファイルと置き換えるJavaScript。
一応ファイルが存在しない場合はエラーログを書き出すことになっているけど
私仕様なので、このままだとJavaScript自体がエラーになるので注意。
なお、このJavaScriptを使用して損害をこうむっても
私は知りませんので、あしからず。
偽善者こうちゃん
http://macneko.blog77.fc2.com/
*/
//画像のリンク先を変更する関数
function ReLink() {
//画像の貼られている(リンクされている)フレームを選択
komaObj.pageItems.item("image").select() ;
var imageFrame = app.selection[0] ;
//貼られている(リンクされている)ファイルの名前を取得
var imageName = imageFrame.graphics[0].itemLink.name ; //itemLinkでLinkプロパティの指示が出来る
//置換したい先のフルパスを生成
var ImagePath = "Links:" + imageName ;
//置換先に画像があるかどうかチェック
//新しいファイルを生成する
var existsFileObj = new File(ImagePath);
//ファイルが存在するかexistsでチェック
var FFlag = existsFileObj.exists;
if (FFlag == true) { //存在したら
//貼り直す(同じ画像を貼るので位置や倍率はとりあえず指示はしないでおく)
imageFrame.place(ImagePath)
} else { //無かったら
var Witefilename = "エラーログ.txt";
var WfileObj = new File(Witefilename);
var Wflag = WfileObj.open("w");
if (Wflag == true) {
line = "hoge"
WfileObj.writeln(line);
WfileObj.close();
} else {
alert("ファイルが開けませんでした");
}
}
}