DTP駆け込み寺

No.19274へ返信

記事投稿フォーム
補助
送信

[ 返信 ]

Re^6: 選択テキストと同じ画像を配置

シンプルに...

選択したポイントテキストをファイル名とみなしてファイル(PSD形式)をポイントテキストの座標に指定幅(ww)で貼りこむスクリプト。
テキスト上では拡張子なし。
//---------------------
var docObj = app.activeDocument;
var objs=docObj.selection;

//配置オブジェクトの幅を指定。ポイント単位前提。この場合なら10mmの設定。
var ww=10/0.352778;

if(objs[0]!=null){

//画像の入っているフォルダを指定
var folder_name=Folder.selectDialog("フォルダを指定してください");
var xfolder=new File(folder_name);
//フォルダのパスを取得
var folder_path=xfolder.fsName;

for(var n=0;n<objs.length;n++){
//選択したオブジェクトのうち、ポイントテキストのみ対応
if(objs[n].kind==TextType.POINTTEXT){
var ob=objs[n].contents;
var b_box=objs[n].visibleBounds;

var f_name=new File(folder_path+"/"+ob+".psd");
var xx=b_box[1];
var yy=b_box[0];

Place_Object(docObj,f_name,xx,yy,ww,0);
}
}
}
else{
alert("テキストが選択されていません");
}

//ファイルf_nameを、(xx,yy)の座標にwwの幅で貼り込む。
//xhhが0以下の時、高さをwwに合せて変倍する。
//xhhがそれ以外のときは指定された値にする(→結果として、天地と左右で倍率が異なる可能性が高い)
function Place_Object(docObj,f_name,xx,yy,ww,xhh){
if(f_name.exists){
var im=docObj.placedItems.add() ;
im.file=f_name;
if(xhh<=0){
var w=im.width;
var h=im.height;
var scale=ww/w;
var hh=h*scale;
}
else{
var hh=xhh;
}
im.width=ww;
im.height=hh;
im.position=[yy,xx];
}
}

[19274] . (2017/06/29 Thu 11:34)