检查文件是否存在于 Adobe 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);
}
}
您没有为您的问题提供足够的背景信息。
- Basil.js 是用于生成编程的 InDesign Javascript/Extendscript 库。类似于 Processing 和 P5.js
- Extendscript 是 Javascript (Ecmascript 3) 的 Adobe 风格,添加了一些像
File
或 XML
- 我们无法判断您的文件系统上的文件是否存在或路径是否正确
问题:您使用的是哪个 Basil 版本? v2(仍处于测试阶段)?
下面是要继续讨论的更多样板代码和一些提示。
noStroke
没有得到参数见 this
- 文件
none.jpg
需要位于您正在执行的 InDesign 文档旁边的数据目录中,或者您需要提供绝对路径参见 this
- 请参阅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。我是作者之一,我正在链接到参考的当前开发版本。这些链接将来可能会中断。
我尝试使用普通 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);
}
}
您没有为您的问题提供足够的背景信息。
- Basil.js 是用于生成编程的 InDesign Javascript/Extendscript 库。类似于 Processing 和 P5.js
- Extendscript 是 Javascript (Ecmascript 3) 的 Adobe 风格,添加了一些像
File
或XML
- 我们无法判断您的文件系统上的文件是否存在或路径是否正确
问题:您使用的是哪个 Basil 版本? v2(仍处于测试阶段)?
下面是要继续讨论的更多样板代码和一些提示。
noStroke
没有得到参数见 this- 文件
none.jpg
需要位于您正在执行的 InDesign 文档旁边的数据目录中,或者您需要提供绝对路径参见 this - 请参阅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。我是作者之一,我正在链接到参考的当前开发版本。这些链接将来可能会中断。