如何使用javascript在Indesign CS6中找到文本框架? (我可以通过包含特定段落样式的文本框架查询或者什么?)

时间:2013-03-05 15:02:51

标签: javascript adobe-indesign

我正在寻找关于indesign脚本的内容,我还没有找到关于这个主题的任何内容,我认为这很重要。所以这是我的问题:

  • 如何使用javascript在Indesign CS6中查找文本框架?
  • 我可以通过包含特定段落样式的文本框架进行查询吗?
  • 我可以在我的文本框架(在母版页中)设置某种名称,以便在javascript中获取它?

2 个答案:

答案 0 :(得分:3)

好的,经过一些研究后我发现你可以通过打开“脚本标签”,选择你想要的对象并将标签名写入“脚本标签”面板,为对象设置标签。您不必单击“确定”或“空”,它将自动保存该对象的标签。

执行此操作后,您可以检查对象上的“.label”属性,当您找到带有该标签的对象时,就可以找到它。多个对象可以具有相同的标签。

下面是辅助函数“selectWhere”的示例:

var document = app.documents.item(0); // active document
var allTextFrames = toArray(document.textFrames);
var textFrames = selectWhere("chapterLetter", "label", allTextFrames);

function selectWhere(value, key, array){
    var i = array.length; var t; var filtered = [];
    while(i--){
            t = array[i];
            if(t && t[key] == value){
                filtered.push(t);
            }
    }
    return filtered;
}

function toArray(objects){
    var i = objects.length; var array = [];
    while(i--){
            array.push(objects[i]);
    }
    return array;
}

答案 1 :(得分:0)

1)你的第一个问题的答案是: - solved in this thread

2)现在你得到一些textframes.So你可以查询以获得文本框架上的段落样式

var paraStyle1 = app.activeDocument.paragraphStyles.itemByName("styleA");
    var paraStyle2 = app.activeDocument.paragraphStyles.itemByName("styleB");
  if (paraStyle1.isValid && paraStyle2.isValid) 

3)通过paraStyle1.name,您可以获得样式的名称。参见parastyle1是段落样式对象,因此获取样式对象并通过此属性查找。