ドキュメント上にある画像はGraphicオブジェクトとして集約され、以下のようなものがそれに該当します。

  • Photoshop
  • JPEG
  • TIFF
  • EPS
  • Adobe PDF
  • PICT
  • BMP
  • PNG
  • GIF
  • WMF
  • InDesign(外部読み込みファイル)

 

ドキュメントにあるすべての画像を取得する場合は以下のようにします。

var grObjs= app.activeDocument.allGraphics; //ドキュメント内のすべての画像
var num= grObjs.length;
$.writeln (num);

allGraphicsプロパティは、コンテナオブジェクト(この場合はアクティブドキュメント)にあるすべての画像のことで、配列として取得します。なお、これで取得できる画像は外部リンクだけではなく、内部リンク(埋め込み画像)も含まれています(参照:リンク画像の状況を取得)。

 

また、以下のようにコンテナオブジェクトを変更すれば、範囲を絞って取得することができます。以下の例では、アクティブページにあるすべての画像を取得しています。

var grObjs= app.activeWindow.activePage.allGraphics;
var num= grObjs.length;
$.writeln (num);

 

直接グラフィックフレーム(Rectangleオブジェクトなど)から画像を取得する場合も、同様にallGraphicsで取得します。

//リンク画像のあるグラフィックフレームを選択しているものとする
var selObj= app.selection[0].allGraphics[0];
$.writeln (selObj.itemLink.name); //ファイル名

この場合もあくまで配列として取得することになるので、配列の先頭要素を取り出すという形をとります(下記補足も参照)。

 

<補足>

 

グラフィックフレームに直接内包できる画像は1点だけですが、グラフィックフレームはフレームを入れ子にすることが可能になっています。

もし、その入れ子がグループ化された複数のグラフィックフレームで、なおかつそれぞれが画像を持っていた場合、その親のフレームからallGraphicsで画像を取得すると、複数の画像が配列として返ることになります。

また、このような入れ子はいくらでも(上限はあるのでしょうが)続けることができるので、未知の状態から画像を取得する場合、ドキュメント>ページ>ページアイテム...というアクセス方法は非合理的です。

このような場合は、ドキュメントやスプレッドなどからallGraphicsで画像群を取得し、そこから目的の画像を取捨選択する方法が一般的です。

 

参照:特定のアイテムがどのスプレッド、ページにあるかを取得する

 

 

Joomla templates by a4joomla