-1

我尝试使用普通的 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);
  }
}

4

1 回答 1

3

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

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

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

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

  1. 没有noStroke论据看到这个
  2. 该文件none.jpg需要位于您正在执行的 InDesign 文档旁边的数据目录中,或者您需要提供绝对路径请参阅
  3. 有关如何处理图像,请参阅本教程
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);
  }
}

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

于 2019-08-07T04:32:01.573 回答