top

【InDesignCS3+javascript】NameView.jsx

by buruge ~ 10月 2nd, 2008. Filed under: DTP, InDesignCS3+javascript.

InDesignCS3上に配置してある画像の名前は、リンクパレットを開かないと分からないですよね?
カタログとかを組版し終わって、商品の画像のみを収集をしなければならないとき、ファイル名をきちんと整理してなかったらどれが商品で、どれがマークとか素材なのかが分かりづらくて、リンクパレットで確認しながら収集しないといけません。
そういう時にもっと直観的にファイル名が分かるように作ってみました。
新規レイヤーを作って、 リンクしてある画像の上にファイル名を表示するスクリプトです。
まあ、最初からきちんと名前付けていればこんなことする必要もないわけですが…。

今回もファイルパスの関係からMacOS専用です。
変なとこ見つけたら容赦なくご指摘お願いします。

/*

NameView.jsx
InDesignで配置された画像のファイル名をドキュメント上に表示するスクリプトです。

使い方:
ドキュメントを開いて、スクリプトを実行してください。
新規レイヤーを作成したのち、配置されている画像の中心にテキストフレームが追加されファイル名が表示されます。

注意:
Mac専用。
このスクリプトで何か異常が起こっても責任は負いかねます。

動作確認:MacOSX 10.5.2 InDesignCS3

2008.06.02 作成
buruge
http://buruge.net

*/

if(app.documents.length == 0){//ドキュメントが開かれているかの判定
alert(”ドキュメントが開かれていません。ドキュメントを開いてから再実行してください”);
exit();
}
setColor = [0, 0, 0, 0];
Color1 = app.activeDocument.colors.add({model:ColorModel.process,space:ColorSpace.cmyk,colorValue:setColor});
setColor2 = [0, 100, 100, 0];
Color2 = app.activeDocument.colors.add({model:ColorModel.process,space:ColorSpace.cmyk,colorValue:setColor2});
layObj = app.activeDocument.layers.add();//新規レイヤー
pageObj=app.activeDocument.pages;
for(i=0;i<pageObj.length;i++){
if(pageObj[i].allGraphics.length>0){
for(j=0;j<pageObj[i].allGraphics.length;j++){
fp = pageObj[i].allGraphics[j].itemLink.filePath;//画像のファイルパス取得
fname = fp.split (”:”);//:でファイルパスを分解
fn = fname[fname.length-1];//分解した配列の最後にあるのがファイル名
//画像の座標を取得する
parentObj = pageObj[i].allGraphics[j].parent;//画像が配置されてる親のオブジェクトを取得
gbSize = parentObj.visibleBounds;//座標を取得
//テキストフレーム作成
txtObj = pageObj[i].textFrames.add();
txtObj.geometricBounds = gbSize;
txtObj.contentType = ContentType.textType;
txtObj.contents = File.decode(fn);
txtObj.paragraphs[0].pointSize = “12pt”;
txtObj.paragraphs[0].justification = Justification.CENTER_ALIGN;
txtObj.paragraphs[0].fillColor = Color2;
txtObj.textFramePreferences.verticalJustification = VerticalJustification.CENTER_ALIGN;
txtObj.fillColor = Color1;
txtObj.move(”by”,[0,(gbSize[2]-gbSize[0])/2]);
txtObj.fit(FitOptions.frameToContent);
}
}
}
alert(”完了しました。”);

Leave a Reply