2017-08-28 2 views
3

Ich arbeite an einem Skript, das meine Zwischenablage in jedem ausgewählten Rahmen einfügt. Nach der Suche habe ich nicht herausgefunden , wie Sie etwas in einen Rahmen (oder Polygon) einfügen.InDesign-Skripte: Vergangenheit in Frames

ich an so etwas wie dies fest:

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

Was soll mySelection[i].contents = app.paste() sein?

Antwort

0

Hier ist etwas, was helfen wird, basierend auf another answer I provided not long ago. Damit in dieses Snippet etwas eingefügt werden kann, MÜSSEN Sie in Ihrem Dokument SELECTED TEXT haben. So weiß dieses Snippet, wo es eingefügt werden soll.

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"); 
} 

Aktualisiert folgenden Kommentar: Für diesen Schnipsel habe ich ein InDesign-Dokument, in das ich 2 Objekte erstellt. Ein Objekt ist eine TextBox, in die ich einen Textblock eingegeben habe, und das zweite Element ist einfach ein Polygon, das ich unter die textBox gezeichnet habe. Ich habe den Inhaltstyp des Polygons nicht festgelegt, sondern einfach das Polygon gezeichnet. Um die pageItems effektiv zu finden, die ich wirklich will und brauche, habe ich Script Labels verwendet, obwohl das Verwenden von Etiketten nicht obligatorisch ist. Solange Sie einen Mechanismus haben, um zu wissen, dass Sie mit dem richtigen Objekt zu tun haben.

Die Idee hinter diesem Code-Schnipsel ist wirklich einfach:

  1. Select the Source object
  2. Copy the selected object
  3. Select the Destination object
  4. Paste into the selected object

.

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(); 
+0

Mit welchem ​​Befehl kann ich meine Zwischenablage direkt ** in ** ein Polygon einfügen? Z.B. Ich wähle ein Polygon, führe das Skript aus und danach habe ich einen Textrahmen in dieses Polygon eingefügt. – Malte

+0

@Malte, aktualisiert –

+0

Danke! Der Punkt war 'app.pasteInto()', von dem ich nichts wusste. Ich benutzte 'app.paste()' – Malte