InDesign脚本:过去进入帧

时间:2017-08-28 10:36:46

标签: javascript adobe-indesign

我正在编写一个脚本,在每个选定的帧中粘贴我的剪贴板。在搜索之后,我没有想出如何将某些东西粘贴到框架(或多边形)中。

我坚持这样的事情:

function pasteSelection(mySelection) {
    for (var i = mySelection.length - 1; i > -1; i--) {
        mySelection[i].contents = app.paste();
    }
}

mySelection[i].contents = app.paste()应该是什么?

1 个答案:

答案 0 :(得分:0)

根据another answer I provided not long ago,这些内容会有所帮助。要使此代码段粘贴任何内容,您必须在文档中选择文本。这就是这个片段知道粘贴位置的方式。

var myDoc = app.activeDocument;

if(app.documents.length != 0){
    if(app.selection.length == 1){
        try{           
            var frame1 = app.selection[0];
            frame1 = app.paste();//works
            //app.pasteWithoutFormatting(frame1);;works too
         }
        catch(e){
            alert ("Exception : " + e, "Exception");
        }
    }
 else{
    alert ("Please select text", "Selection");
  }  
}
else{
    alert("Something wrong");
}

更新了以下评论: 对于这个片段,我创建了一个indesign文档,我在其中创建了2个对象。一个对象是一个textBox,我在其中键入了一堆文本,第二个项目只是我在textBox下面绘制的多边形。我没有设置多边形的内容类型,我只是画了多边形。为了有效地找到我真正想要和需要的pageItem,我使用了Script Labels,尽管使用标签不是强制性的。只要你有机制知道你正在处理正确的对象。

这段代码背后的想法非常简单:

  1. Select the Source object
  2. Copy the selected object
  3. Select the Destination object
  4. Paste into the selected object
  5. var myDoc = app.activeDocument;
    var source;
    var destination;
    
    for(var i = 0; i < myDoc.pageItems.length; i++)
    {
        if(myDoc.pageItems[i].label == "source") 
        {
            source = myDoc.pageItems[i];
            app.selection = myDoc.pageItems[i];
            app.copy();
            }
        else if(myDoc.pageItems[i].label == "destination")
        {
            destination = myDoc.pageItems[i];
            }
    
        if(source !== undefined && destination !== undefined)
        {
            break;
            }
    }
    app.selection = destination;
    app.pasteInto();