Introducing: Insert Page Numbers
Hi all, about three weeks ago a user asked about something like this, I thought it was a good idea to have it scripted.
Have a use for it? Let me know if there are questions, bugs...

#target illustrator
// script.name = UI_insertPageNumbers.jsx; // works with CS4 & CS5
// script description = Inserts page numbers (or any other text) to all artboards in the active document;
// script.required = at least one open document
// script.parent = CarlosCanto // 11/14/11;
// script.elegant = false;
// Notes: The script creates a new layer (Page Numbers) then adds a text frame per Artboard that act as footer or header text.
// Its primary function is to insert Page Numbers, but it could be used to insert any other kind of information.
if (app.documents.length > 0) // continue if there's at leat one document open
{
// start building User Interface
var win = new Window("dialog","MTools - Insert Page Numbers");
var panelMargins = win.add("panel", undefined, "Margins");
var lblMargins = panelMargins.add("statictext",undefined,"How far from the edge:");
var txtMargins = panelMargins.add("edittext",undefined, 0.25);
var lblUnits = panelMargins.add("statictext",undefined,"inches");
var panelLocation = win.add("panel", undefined, "Location");
var radTop = panelLocation.add("radiobutton",undefined,"Top");
var radBottom = panelLocation.add("radiobutton",undefined, "Bottom");
var panelAlignment = win.add("panel", undefined, "Alignment");
var radLeft = panelAlignment.add("radiobutton",undefined,"Left");
var radCenter = panelAlignment.add("radiobutton",undefined, "Center");
var radRight = panelAlignment.add("radiobutton",undefined, "Right");
var panelFooter = win.add("panel", undefined, "Text to insert");
var grpPages = panelFooter.add("group");
var btnPage = grpPages.add("button",undefined,"Insert Page");
var btnPages = grpPages.add("button",undefined,"Insert Pages");
var txtFooter = panelFooter.add("edittext",undefined, "[Type text to insert here]");
var btnOk = win.add("button", undefined, "Ok");
radRight.value = radBottom.value = true;
win.alignChildren = panelFooter.alignChildren = "fill";
panelMargins.spacing = 3;
panelMargins.orientation = panelLocation.orientation = panelAlignment.orientation = "row";
win.helpTip = "Coded by CarlosCanto";
btnPage.helpTip = "Adds *page* keyword, it represents a single page";
btnPages.helpTip = "Adds *pages* keyword, it represents total number of pages";
txtFooter.helpTip = "Type \r\t'Page *page* of *pages*' \rto get \r\t'Page 1 of 3' \rfor example";
//-----------------------------------------------------------------------------------------
btnOk.onClick = function(){
doSomething(); // call main function
win.close(); // close when done
}
//-----------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
btnPage.onClick = function(){
footer("*page*");
}
//-----------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
btnPages.onClick = function(){
footer("*pages*");
}
//-----------------------------------------------------------------------------------------
win.center();
win.show();
//-----------------------------------------------------------------------------------------
function footer (page) //
{
txtFooter.text = txtFooter.text + page;
}
function doSomething()
{
//alert("I'm doing something");
var idoc = app.activeDocument;
var ilayer = idoc.layers.add();
ilayer.name = "Page Numbers";
var pages = idoc.artboards.length; // number of artboards
var footerPages = (txtFooter.text).replace("*pages*",pages); // replace the "*pages*" keyword with the actual number fo pages (artboards)
var margins = Number(txtMargins.text)*72; // get margins in points
//$.writeln(margins);
for (i = 0; i<idoc.artboards.length; i++) // loop thru all artboards, and add input text from UI
{
footerPage = footerPages.replace("*page*",i+1); // replace "*page*" keyword with the actual page Number
var itext = ilayer.textFrames.add();
itext.contents = footerPage; //"page 1 of 1";
var fontSize = itext.textRange.characterAttributes.size;
var activeAB = idoc.artboards;
var iartBounds = activeAB.artboardRect;
var ableft = iartBounds[0]+margins;
var abtop = iartBounds[1]-margins;
var abright = iartBounds[2]-margins;
var abbottom = iartBounds[3]+margins+fontSize;
var abcenter = ableft+(abright-ableft)/2;
if (radRight.value == true)
{
//var msg = "right";
itext.left = abright;
itext.textRange.paragraphAttributes.justification = Justification.RIGHT;
}
else if (radCenter.value == true)
{
//var msg = "center";
itext.left = abcenter;
itext.textRange.paragraphAttributes.justification = Justification.CENTER;
}
else
{
//var msg = "Left";
itext.left = ableft;
itext.textRange.paragraphAttributes.justification = Justification.LEFT;
}
if (radTop.value == true)
{
var msg = "top";
itext.top = abtop;
}
else
{
var msg = "bottom";
itext.top = abbottom;
}
} // end for loop thru all artboards
} // end function doSomething();
}
else
{
alert ("there's no open documents");
}

