0

我是 Javascript 中级,但对 Adob​​e 的“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

你不应该使用构造函数,除非你想尝试确定它是什么类型的 JS 对象,在这种情况下你不需要这样做,因为images集合只包含图像。file 属性实际上将位于图像的相关Link对象上。

请注意,这些都没有经过测试,我只是利用了我对 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 回答