我之前的一些背景知识:我绝不是InDesign的专家,但我的任务是从我们公司的InDesign文件中提取一些文本信息来进行一些分析。我正在使用的每个InDesign文件都有多个页面,每个页面都使用Master页面中的Stories(如果我使用了错误的术语,请原谅我,我正在对InDesign对象模型进行有限的理解) 。使用默认的“导出所有文本”脚本作为起点,我能够扩展该功能以转储其他有用信息;例如几何边界。我已经发布了以下一些代码:
myFileName = "StoryID" + myID + myExtension;
myFilePath = myFolder + "/" + myFileName;
myFile = new File(myFilePath);
myFile.encoding='text';
myFile.open('w');
containers = myStory.textContainers;
if (containers[0].overridden) {
for (i = 0; i < myStory.words.length; i++) {
myFile.write(myStory.words[i].contents);
myFile.write(" ");
}
myFile.write("\n");
}
else {
myFile.write(myStory.contents + '\n');
}
var geometry = containers[0].geometricBounds
myFile.write("++" + containers[0].parent.name + '\n');
myFile.write("$$" + geometry[0] + "\t" + geometry[1] + "\t" + geometry[2] + "\t" + geometry[3] + "\n");
pageitems = myStory.allPageItems;
for (j = 0; j < pageitems.length; j++){
myFile.write("--" + pageitems[0]);
}
myFile.close();
我的问题是,如何确定故事中出现的所有页面?例如,我可以说我有4页:{Master,Region 1,Region 2,Region 3}。区域1 - 3都从Master继承了一个Story块。当我运行这个脚本时,我只得到一个Story块的实例,属于Master的实例。但是,我很想知道有问题的Story块属于所有4页。我试过访问allPageItems属性,但我一直得到0结果。
任何帮助将不胜感激。如果有帮助,我正在研究InDesign CS 6
答案 0 :(得分:3)
当您访问allPageItems
元素的Story
时,您正在访问该故事中锚定的所有页面项目,我认为这不是您想要的。“ / p>
当您访问allPageItems
属性时,您会得到0结果,因为您的Story
不包含任何textFrames
。 Story
元素包含在textContainers
而不是textFrames
中。我知道这很令人困惑!
如果您想确定某个故事是否在特定网页上,您可以访问textContainers
'parentPage
媒体资源。
Story
流经多个textContainers
。例如:
link link
TextContainer --> TextContainer2 --> TextContainer3
|_____________________________________________________________________|
|
Story
Story
还可以包含textFrames
,rectangles
,words
等。例如:
Story
___________________________________|__________________________________
| |
Word --> Word2 --> TextFrame --> Word3 --> Word4 --> Word5