检查文件是否存在于 Adob​​e Extendscript 本地

Check if file exists locally in Adobe Extendscript

我尝试使用普通 js 循环检查本地文件 (.jpg)。我得到一个错误,例如,文件 5d3eb1905b243.jpg 不存在,但实际上它存在。

此外,我不明白为什么 else 语句不起作用以及为什么 5d3eb1905b243.jpg 没有替换为 none.jpg

可能是路径的问题?

代码如下:

if (obj[i].hasOwnProperty('sharedimage_id')) {
  var imgFile = new File(
    '/Users/student/Desktop/seminar_robobooks/archiv/img/' +
      obj[i].sharedimage_id +
      '.jpg',
  );

  if (imgFile.exists) {
    noStroke(imgFile);
    image(obj[i].sharedimage_id + '.jpg', 56.5, 70.793, 69, 42);
  } else {
    noStroke(imgFile);
    image('none.jpg', 56.5, 70.793, 69, 42);
  }
}

您没有为您的问题提供足够的背景信息。

  1. Basil.js 是用于生成编程的 InDesign Javascript/Extendscript 库。类似于 Processing 和 P5.js
  2. Extendscript 是 Javascript (Ecmascript 3) 的 Adob​​e 风格,添加了一些像 FileXML
  3. 我们无法判断您的文件系统上的文件是否存在或路径是否正确

问题:您使用的是哪个 Basil 版本? v2(仍处于测试阶段)?

下面是要继续讨论的更多样板代码和一些提示。

  1. noStroke 没有得到参数见 this
  2. 文件 none.jpg 需要位于您正在执行的 InDesign 文档旁边的数据目录中,或者您需要提供绝对路径参见 this
  3. 请参阅this tutorial了解如何处理图像
var obj = [
  {
    sharedimage_id: '123456',
  },
  {
    sharedimage_id: '789012',
  },
];

for (var i = 0; i < obj.length; i++) {
  // the File API test is part of Extendscript
  // https://www.indesignjs.de/extendscriptAPI/indesign10/#File.html
  var imgFile = new File('/absolute/path/to/' + obj[i].sharedimage_id + '.jpg');

  if (imgFile.exists === true) {
    // no stroke does not take an argument
    //https://basiljs2.netlify.com/reference/color/nostroke
    noStroke();

    image(obj[i].sharedimage_id + '.jpg', 56.5, 70.793, 69, 42);
  } else {
    noStroke();
    // the image needs also a path as the one above 
    // or should be in the data dir nest to the ID doc.
    // ID doc needs to be saved for that
    // https://basiljs2.netlify.com/reference/image/image
    image('none.jpg', 56.5, 70.793, 69, 42);
  }
}

P.S。我是作者之一,我正在链接到参考的当前开发版本。这些链接将来可能会中断。