0

私は Javascript の中級者ですが、Adobe の「Extendscript」にはあまり詳しくありません。InDesign のコード構造を練習し、理解を深めるために、 を介して画像のプロパティにアクセスしようとしていますrectangles.images

たとえば、画像のファイル名にアクセスすることは可能rectangles.imagesですか? また、この方法で画像の色属性にアクセスできるかどうか、たとえばグレースケールに変換できるかどうかにも興味がありますか?

これまでの私のアプローチは次のとおりです。

for(var i = 0; i < app.activeDocument.rectangles.length; i++)
{
    var imageType = app.activeDocument.rectangles[i].images.constructor.name;

    switch(imageType)
    {
        case "Images":
            alert(app.activeDocument.rectangles[i].images.name); // "name" is not a valid property here!
            break;

        default:
            alert("There are no images in this file.");
    }
}

また、画像のファイルタイプを特定することは可能.rectangles.images.constructor.nameですか? たとえば、PDFまたはjpegのケースを追加したいと思います。

4

1 に答える 1

3

imagesコレクションには画像のみが含まれるため、この場合は必要のないJSオブジェクトのタイプを特定したい場合を除き、コンストラクターを使用しないでください。file プロパティは、実際には画像の関連Linkオブジェクトにあります。

これはどれもテストされていないことに注意してください。jsut は、JS とAPI ドキュメントに関する私の知識を取り入れて、コードを作り直しました...

var rect = app.activeDocument.rectangles,
    imgs,
    filePath,
    hasImages = false;

for(var i = 0; i < rect.length; i++) {
    imgs = rect[i].images;
    if( imgs.length > 0) {

      hasImages = true;
      for (var j = 0; j < imgs.length; j++) {
         filePath = imgs[j].itemLink ? imgs[j].itemLink.filePath : null; 
         switch (imgs[j].imageTypeName) {
             case 'jpeg':
                alert('This is a JPEG:' + filePath);
                break;
             case 'pdf':
                alert('This is a PDF: '+filePath);
                break;
             default:
               alert('Default case - '+imgs[j].imageTypeName+': '+filePath);
         }
      }
   }
} 

if(!hasImages) {
   alert('No images in document');
}
于 2012-06-15T01:51:52.043 に答える