Skip to main content
davburk96
Participant
September 26, 2016
Question

Indesign script to change the x and y coordinates of page items

  • September 26, 2016
  • 1 reply
  • 3838 views

Hi all!

Would there be a way to find text frames with the same x and y coordinates

in a document and make a change to the x and y coordinates that would change

all the text frames by a script of some sort?

Thanks a bunch for your help!

Austin Witmer_2

This topic has been closed for replies.

1 reply

Skemicle
Inspiring
September 26, 2016

Yes there is a way to do this. =)

Obi-wan Kenobi
Legend
September 26, 2016

… Something like this:

var myTF = app.activeDocument.textFrames.everyItem().getElements();

var x = 10;

var y = 15; 

var movex = 8;

var movey = 22;

for ( i = 0; i < myTF.length; i++)

     { 

        var gB = myTF.geometricBounds; 

        var y1 = gB[0].toFixed(2);

        var x1 = gB[1].toFixed(2);

        if (y1 == y && x1 == x)  myTF.geometricBounds = [gB[0]+movey, gB[1]+movex, gB[2]+movey, gB[3]+movex];

     }

[ need to be confirmed by the experts! ]

(^/) 

Obi-wan Kenobi
Legend
September 27, 2016

Still not a great master of UI! 

Done! 

[ To be validated by the [JS] Masters! ]

var myDoc = app.activeDocument;

var w = new Window ('dialog {alignChildren: "top"}', 'Move TF (x,y) To (newx, newy)!');

w.alignChildren = "right";

    var group1 = w.add ('group');

        group1.add ('statictext {text: "Type the old x:"}');

    var UIx = group1.add ("edittext", undefined, 0);

        UIx.characters = 5;

        UIx.minimumSize.width = 60;

        UIx.maximumSize.width = 60;

        UIx.active = true;

    var group2 = w.add ('group');

        group2.add ('statictext {text: "… and the old y:"}');

    var UIy = group2.add ("edittext", undefined, 0);

        UIy.characters = 5;

        UIy.minimumSize.width = 60;

        UIy.maximumSize.width = 60;

    var group3 = w.add ('group');

        group3.add ('statictext {text: "Type the new x:"}');

    var UInewx = group3.add ("edittext", undefined, 0);

        UInewx.characters = 5;

        UInewx.minimumSize.width = 60;

        UInewx.maximumSize.width = 60;

    var group4 = w.add ('group');

        group4.add ('statictext {text: "… and the new y:"}');

    var UInewy = group4.add ("edittext", undefined, 0);

        UInewy.characters = 5;

        UInewy.minimumSize.width = 60;

        UInewy.maximumSize.width = 60;

    var buttons = w.add ('group {alignment: "center"}');

        buttons.add ('button {text: "OK"}');

        buttons.add ('button {text: "Cancel"}');           

if (w.show () == 1) {

    var x = Number (UIx.text);

    x = x.toFixed(2);

    var y = Number (UIy.text);

    y = y.toFixed(2);

    var newx = UInewx.text;

    var newy = UInewy.text;

    }

else

exit ();

app.doScript("main()", ScriptLanguage.javascript, undefined, UndoModes.FAST_ENTIRE_SCRIPT, "Move TF (x,y) To (newx, newy)!");

 

function main()

var myTF = myDoc.textFrames.everyItem().getElements();

for ( i = 0; i < myTF.length; i++) 

     {   

        var gB = myTF.geometricBounds;   

        var y1 = gB[0].toFixed(2); 

        var x1 = gB[1].toFixed(2);

        if ( y1 == y && x1 == x )  myTF.move([newx, newy]);

     }

}

(^/)