Skip to main content
Zantcor
Inspiring
November 13, 2015
Answered

Scripting Languages, and numbering artboards

  • November 13, 2015
  • 2 replies
  • 656 views

Hello fellow scripters,

First Question:

I know that the scripts support Java, and I remember it supporting Basic but what other languages can I script in?  Can I have the bulk of the script in Java then have parts in SQL?

Second Question:

I know how to make a script write text to an layer, and position using the (x,y) location but if I have multiple Art boards? I need to do the following;

Check for total number of art boards //Some files have 2 others have 3 and very few will have 4.

Take the art boards number, not the name and print it in the lower left (1,1) from the bottom.

I would need to run this batch on a folder that has sub folders of sub folders.  They are all .ai or .pdf files and there are about 2k files.  I've got about 2-3 months to do this but I wanted to write the script now so that I can have it done, this way I can run it on chunks of the files at a time.

I've never made a batch script, and I've never had to write a script that changes between art boards.  I need to know how to tell Illustrator to Select an art board, I can create the for loop cycling through all the art boards and then I can tell it to save but how do I tell it to grab the next file in the folder and repeat?

This topic has been closed for replies.
Correct answer Disposition_Dev

to print text to each artboard, you can use the below function. i'd just set a variable for the text to print so it can be easily changed if need be.

I hope this is helpful.

function printToArtboards(){

    var docRef = app.activeDocument;

    var artboards = docRef.artboards;

    var layers = docRef.layers;

    app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;

    for(var a=0;a<artboards.length;a++){

        artboards.setActiveArtboardIndex(a);

        var theAB = artboards[0].artboardRect;

        var text = layers[0].textFrames.add();

        text.contents = 'This is artboard ' + (a+1);

        text.left = 1;

        text.top = (theAB[3] - theAB[1]) + text.height + 1;

    }

}

printToArtboards();

2 replies

Disposition_Dev
Disposition_DevCorrect answer
Legend
November 17, 2015

to print text to each artboard, you can use the below function. i'd just set a variable for the text to print so it can be easily changed if need be.

I hope this is helpful.

function printToArtboards(){

    var docRef = app.activeDocument;

    var artboards = docRef.artboards;

    var layers = docRef.layers;

    app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;

    for(var a=0;a<artboards.length;a++){

        artboards.setActiveArtboardIndex(a);

        var theAB = artboards[0].artboardRect;

        var text = layers[0].textFrames.add();

        text.contents = 'This is artboard ' + (a+1);

        text.left = 1;

        text.top = (theAB[3] - theAB[1]) + text.height + 1;

    }

}

printToArtboards();

Zantcor
ZantcorAuthor
Inspiring
November 19, 2015

Thank you both, this will be very handy in the future for all my scripting needs.

Many Thanks!

CarlosCanto
Community Expert
Community Expert
November 14, 2015

check File System section in the Tools Guide.

first get a reference to a folder

var mydesk = Folder.desktop;

then to get the files in the folder

var files = mydesk.getFiles (/\.(ai|pdf)$/i); // returns an array of files

then loop thru the files and do your thing

loop {

    var file = files;