Back

If your email is not recognized and you believe it should be, please contact us.

Forum Replies Created

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • Ian
    Member

    Ended up using an array to solve the multiple paragraphs issue.

    // Original code by Jonathan Leathwood
    // https://creativepro.com/topic/using-javascript-to-move-paragraphs-to-anchored-objects/
    //
    //DESCRIPTION:Cuts all paragraphs of a certain paragraph style, reinserts them as text anchors, and applies an object style
    
    var myDoc = app.activeDocument; // The open document: the scene of the action
    
    if (app.selection[0] instanceof TextFrame) {
    
      var myParas = app.selection[0].parentStory.paragraphs; // The collection of paragraphs
      var myParaCount = app.selection[0].parentStory.paragraphs.length; // The number of paragraphs in the story
      var myCapture = []; // Create an array to store selected paragraphs
    
      myResult = confirm("This script requires a paragraph style named Main > Ruled, another paragraph style named Main > Fillable Form, and an object style named Fillable Form. Do you have those set up?");
      if (!myResult) {
        exit();
      }
    
      // Make a reference to the paragraph style
      var paraStyleSelect = app.activeDocument.paragraphStyleGroups.item("Main").paragraphStyles.item("Ruled");
      var paraStyleNew = app.activeDocument.paragraphStyleGroups.item("Main").paragraphStyles.item("Fillable Form");
      var objectStyleSelect = app.activeDocument.objectStyles.item("Fillable Form");
    
      // Loop to make the change on every paragraph that has the selected style
      for (i = myParaCount - 2; i >= 0; i--) {
        if (myParas[i].appliedParagraphStyle == paraStyleSelect) {
    
          myCapture.push(myParas[i]);
    
          var j = i - 1;
          while (myParas[j].appliedParagraphStyle == paraStyleSelect) {
            myCapture.push(myParas[j]);
            j--;
          }
    
          myParas[i + 1].insertionPoints[0].contents = "\r"; // Add a new hard return i.e. a new paragraph
          myParas[i + 1].appliedParagraphStyle = paraStyleNew; // i + 1 is now that newly created paragraph
          var myNewTextFrame = myParas[i + 1].insertionPoints[0].textFrames.add(); // Make a new text frame
    
          for (var k = 0; k < myCapture.length; k++) {
            myCapture[k].move(LocationOptions.AT_BEGINNING, myNewTextFrame.insertionPoints[0]); // Move the paragraph into the new text frame at the first insertion point
          }
    
          // Convert text box to fillable form text field
          app.select(myNewTextFrame);
          var convertToTextField = app.menuActions.itemByName("$ID/$$$/Command/TextField");  // Menu command "Convert To Text Field":
          // If available:
          if (convertToTextField.enabled) {
            convertToTextField.invoke();
            app.selection[0].applyObjectStyle(objectStyleSelect, true, true);
            app.selection[0].multiline = true;
            app.selection[0].appliedFont = "Georgia";
          };
        }
      }
      alert("High five!");
    
    } else {
      alert("Please select a text frame and try again.");
      exit();
    }
    Ian
    Member

    Update: Got the conversion to fillable form field working:

    
        // Convert text box to fillable form text field
        app.select(myNewTextFrame);
        var convertToTextField = app.menuActions.itemByName("$ID/$$$/Command/TextField");  // Menu command "Convert To Text Field":
        // If available:
        if (convertToTextField.enabled) {
          convertToTextField.invoke();
        };
    
Viewing 2 posts - 1 through 2 (of 2 total)