FrameFittingOption

[2532]FrameFittingOption | 投稿者:よしひで | 投稿日:2009/03/07(Sat) 00:01:17
はじめまして。

Win InDesign CS4を使用してます。
JavaScriptで、画像フレームにFrameFittingOption(フレーム調整オプション)にて画像トリミングの設定をしたいのですが。。
なにぶん初心者なもので、なかなかうまくいきません。
お知恵を貸していただければ幸いです。
どうかよろしくお願いします。
» 1
[2533]Re: FrameFittingOption | 投稿者:せうぞー | 投稿日:2009/03/07(Sat) 03:15:44
よしひでさんの場合に限らないのですが、
一般的にこうした質問をされる方は、なにがしたいのか、なにがわからないのか、言葉だけではさっぱりわからないことが多いので、
自分が書いたところまで、コードを示してください。
初心者ならばなおさらです。タイポの可能性もありますし。


とりあえず、FrameFittingOptionのプロパティをいくつか使ってみました。


function myerror(mess) {
 if (arguments.length > 0) { alert(mess); }
 exit();
}

var my_selection = app.activeDocument.selection; //グラフィックフレームを選択していると想定
if (my_selection.length == 0) {myerror("何も選択されていません")}
if ("Rectangle, Oval, Polygon".match(my_selection[0].reflect.name) == null)  {myerror("グラフィクフレームを選択してください")}
if (my_selection[0].contentType != ContentType.GRAPHIC_TYPE) {myerror("グラフィクフレームを選択してください")} ;

var my_fit_option = my_selection[0].frameFittingOptions;
my_fit_option.topCrop  = 1;//トリミング量 上
my_fit_option.bottomCrop = 2;//トリミング量 下
my_fit_option.leftCrop = 3;//トリミング量 左
my_fit_option.rightCrop = 4;//トリミング量 右
my_fit_option.fittingAlignment = AnchorPoint.BOTTOM_RIGHT_ANCHOR;//揃え基準点
my_fit_option.fittingOnEmptyFrame = EmptyFrameFittingOptions.NONE;//空のフレームに合わせる:サイズ調整

var my_file = File.openDialog("画像ファイルを指定してください");
my_selection[0].place (my_file);//配置
» 2
[2535]Re: FrameFittingOption | 投稿者:よしひで | 投稿日:2009/03/07(Sat) 10:51:50
せうぞー様、回答ありがとうございます。
拙いソースですが、やりたいことはこんな感じです。

   var pageobj = app.activeDocument.pages[0];
   
//新規フレームを1つ作り、座標に配置。
var imgobj = pageobj.textFrames.add();
   imgobj.visibleBounds = ["110pt","40pt","820pt","650pt"];
   imgobj.contentType = ContentType.graphicType;

//上記で作成したフレームに画像を貼り付け。    
pageobj.textFrames[0].place("C:/press/091t811.PDF");
// ………………ここまでは動いています。…………………

//その画像を貼り付けたフレームに対してトリミング
   pageobj.textFrames[0].FrameFittingOption.leftCrop = 10;

とこんな感じに動かしたいのですが、上の記述ではエラーになります。恥ずかしながら、記述方法が根本的に間違ってる気もします。。。
最終的には複数のフレームを1つ1つにトリミングを個別に設定して配置したいのですが、1つに設定するだけで行き詰まってしまっている状態です。
» 3
[2536]Re: FrameFittingOption | 投稿者:たけうちとおる | 投稿日:2009/03/07(Sat) 13:03:07
frameFittingOptions使った事ないのですが
こんな感じですか?

var pageobj = app.activeDocument.pages[0];

//新規フレームを1つ作り、座標に配置。
var imgobj = pageobj.textFrames.add();
imgobj.visibleBounds = ["110pt","40pt","820pt","650pt"];
imgobj.contentType = ContentType.graphicType;

//その画像を貼り付けたフレームに対してトリミング
var my_fit_option = pageobj.rectangles[0].frameFittingOptions;
my_fit_option.leftCrop = 100;//トリミング量 左
var fileObj = new File("Macintosh HD:err.pdf");
pageobj.rectangles[0].place(fileObj);
» 4
[2537]Re: FrameFittingOption | 投稿者:せうぞー | 投稿日:2009/03/07(Sat) 13:52:49
ちょっと階層を勘違いされているような気がします。
textFrames[0]が唐突に登場しています。
.addメソッドはオブジェクトそのものの返り値をもつので、それを使えばいいです。
かつ、タイポです。
FrameFittingOptionはframeFittingOptionsでなければなりません。


var pageobj = app.activeDocument.pages[0];

//新規フレームを1つ作り、座標に配置。
var imgobj = pageobj.rectangles.add();
imgobj.visibleBounds = ["110pt","40pt","820pt","650pt"];
imgobj.contentType = ContentType.graphicType;

//上記で作成したフレームに画像を貼り付け。    
var my_file = File.openDialog("画像ファイルを指定してください");
imgobj.place(my_file);

//その画像を貼り付けたフレームに対してトリミング
imgobj.frameFittingOptions.leftCrop = 10;
» 5
[2538]Re: FrameFittingOption | 投稿者:せうぞー | 投稿日:2009/03/07(Sat) 14:08:12
あ、先に画像が存在するので、
fitを実行しないといけなかった。#動かしてなかった^^
最後の行にこれを足してください。

imgobj.fit(FitOptions.APPLY_FRAME_FITTING_OPTIONS);
» 6
[2539]Re: FrameFittingOption | 投稿者:よしひで | 投稿日:2009/03/07(Sat) 15:05:54
せうぞー様、たけうちとおる様
ありがとうございました。解決しました。
下記のソースで思い通りの動きを得ることができました。感謝です。


   var pageobj = app.activeDocument.pages[0];
   var imgobj = pageobj.rectangles.add();
   imgobj.visibleBounds = ["110pt","40pt","820pt","650pt"];
   imgobj.contentType = ContentType.graphicType;
   imgobj.place("C:/press/091t811.PDF");
   imgobj.frameFittingOptions.leftCrop = 10;
   imgobj.frameFittingOptions.topCrop = 10;
   imgobj.fit(FitOptions.APPLY_FRAME_FITTING_OPTIONS);

もう少し基本的な部分を勉強しないといけないと痛感しました。
また、なにかありましたら宜しくお願い致します。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア