3

我正在尝试创建一个功能与 SplitStory.jsx 完全相同的 InDesign 脚本,只是它不需要首先选择一个线程化的文本框架,而是循环遍历整个文档中线程化/链接的所有内容

这是我到目前为止所拥有的,但它似乎没有做任何事情。我对脚本很陌生。

main();
function main(){
    //Make certain that user interaction (display of dialogs, etc.) is turned on.
    app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
    if(app.documents.length != 0){
        var myDoc = app.activeDocument;
        var myStories = 0;
        for (var i = 0; myDoc.stories.length > i; i++)
            myStories = myDoc.stories[i];
            mySplitStory(myStories);
            myRemoveFrames(myStories);
    }
    else{
        alert("Please open a document and try again.");
    }
}
function mySplitStory(myStory){
    var myTextFrame;
    //Duplicate each text frame in the story.
    for(var myCounter = myStory.textContainers.length-1; myCounter >= 0; myCounter --){
        myTextFrame = myStory.textContainers[myCounter];
        myTextFrame.duplicate();
    }
}
function myRemoveFrames(myStory){
    //Remove each text frame in the story. Iterate backwards to avoid invalid references.
    for(var myCounter = myStory.textContainers.length-1; myCounter >= 0; myCounter --){
        myStory.textContainers[myCounter].remove();
    }
}

我觉得我需要添加一些mySplitStory(myStories);喜欢的东西mySplitStory(myStories.currentStory);,但是我在网上找不到任何关于这个的东西(或者在 Adob​​e 的脚本文档中——但也许我没有在正确的地方寻找)。

任何帮助将不胜感激!

4

1 回答 1

2

这是一个非常简单的脚本,它允许您遍历文档中的所有 textFrame,然后对线程化的文本框架执行任何您需要的操作。基本上,如果任何给定的 textFrame 有一个textFrame对象,nextTextFrame或者previousTextFrame您知道它是线程的。

test();
function test(){

    var myDoc = app.open('c:/123.indd');

    //get all textframes:
    var allTextFrames = myDoc.textFrames;

    for(var i=0;i<allTextFrames.length;i++){
        var tf = allTextFrames[i];

        if(tf.nextTextFrame != null || tf.previousTextFrame != null){

           //text frame is threaded, do work:
        }
    }
}

希望这可以帮助!!

于 2012-05-11T20:06:51.010 回答