我正在为Indesign编写一个脚本。在该脚本中,我将获取文本框架的内容并将其保存到数据库中。直到我的脚本工作。但是,在textframes脚本之间循环时,脚本使用创建顺序。我想以问题顺序保存到数据库。
这是我的剧本:
var myDocument = app.activeDocument;var frameList = myDocument.textFrames;
for (var i = 0; i < frameList.length; i++){
var txt=frameList[i].contents;
SaveToDB(txt);
}
那么有没有办法改变文本框架的创建顺序
答案 0 :(得分:2)
简短的回答是 - 它看起来不可能。文本框架按创建顺序添加到textFrames中,没有方法可以移动它们。 textFrame对象具有索引属性,但它是只读的。
您可以按问题顺序创建文本框架。
另一种方法是在保存到数据库之前对数组进行排序。我想,您需要使用多维数组并在那里生成排序顺序。您可以尝试从文本框中抓取几个第一个字符,因为它似乎代表了问题编号。另一种方法是添加脚本标签作为排序顺序。
最后,让数据库对它们进行排序。将记录存储在数据库中的顺序通常并不重要,因为数据库查询无论如何都会添加排序
答案 1 :(得分:1)
是的,有一种方法可以更改“创建顺序”,只需重新排列“图层”面板中的文本框即可。堆栈中最低位置的文本框架将被视为首先创建的文本框架,以及最高位置的文本框架,就好像它是最后创建的一样。
但是,我知道无法通过脚本更改此堆栈顺序(如果有人知道,我很想听到它)。
因此,您可以选择在“图层”面板中手动重新排列此堆栈顺序,然后运行脚本或按问题编号对其进行排序(如Jongware在StackExchange GraphicDesign上建议的那样)。