【问题标题】:Determining the relationship between Stories and Pages确定故事和页面之间的关系
【发布时间】:2013-04-11 15:13:20
【问题描述】:

开始之前的一些背景知识:我绝不是 InDesign 专家,但我的任务是从我们公司的 InDesign 文件中提取一些文本信息来进行一些分析。我正在使用的每个 InDesign 文件都有多个页面,并且每个页面都使用母版页中的故事(如果我使用了错误的术语,请原谅我,我对 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 块的实例,即属于 Master 的实例。但是,我很想知道有问题的故事块属于所有 4 页。我已尝试访问 allPageItems 属性,但始终得到 0 个结果。

任何帮助将不胜感激。如果有帮助,我正在开发 InDesign CS 6

【问题讨论】:

    标签: adobe-indesign


    【解决方案1】:

    当您访问 Story 元素的 allPageItems 时,您访问的是锚定在该故事中的所有页面项目,我认为这不是您想要的。

    当您访问 allPageItems 属性时,您会得到 0 个结果,因为您的 Story 不包含任何 textFramesStory 元素包含在 textContainers 而不是 textFrames 中。我知道这很混乱!

    如果您想确定某个故事是否在特定页面上,您可以访问textContainers'parentPage 属性。

    一个Story 流经多个textContainers。例如:

                      link                         link
    TextContainer      -->      TextContainer2      -->      TextContainer3
    |_____________________________________________________________________|
                                       |
                                     Story
    

    Story 还可以包含textFramesrectangleswords 等。例如:

                                     Story
    ___________________________________|__________________________________
    |                                                                     |
    Word  -->  Word2  -->  TextFrame  -->   Word3  -->   Word4  -->   Word5
    

    【讨论】:

    • 感谢乔希的澄清,这真的很有帮助!您是否熟悉覆盖在对象模型中的表示方式?例如,如果 Story1 被新文本覆盖,它是在原始 Story 中显示为新的 TextContainer,还是在覆盖属性为 true 的新 Story 对象中显示?
    • 嗯,试图理解你在说什么。如果页面应用了主工作表,则主工作表上的项目将应用到页面,但您无法更改它们,因为它们尚未被覆盖。如果要覆盖该页面上的某个项目,则需要对该项目调用 override 函数,如下所示:masterPageItem.override(pageItem)
    • 您可能会认为它就像 pageItem 仍然在母版页上,直到您在实际页面上覆盖它...也许,希望我不会让自己感到困惑。
    • 酷,这就是我对 Pages Master Sheet 关系的理解。但是,我将如何检测哪些 pageItems 是 MasterPageItem 的覆盖?我想总会有被覆盖的字段。我有一种感觉,摆在我面前的任务可能比我想象的要困难得多。感谢 Josh 的洞察力
    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2021-06-23
    相关资源
    最近更新 更多