var docRef = app.activeDocument;
// some globals
var nyt_png_info; // layer to save our settings on
var nyt_png_prefix; // file prefix
var nyt_png_base_path; // base path
var nyt_png_xml;
var nyt_png_dlg;
var nyt_parse_success = false;
// get our info layer, or create it with some defaults
try {
nyt_png_info = docRef.layers.getByName( 'nyt_png_info' );
} catch ( e ) {
nyt_png_info = docRef.layers.add();
nyt_png_info.name = 'nyt_png_info';
//nyt_png_info.move(docRef.layers[ docRef.layers.length-1],ElementPlacement.PLACEAFTER);
var nyt_png_info_xml = nyt_png_info.textFrames.add();
var saved_data = new XML( '' );
saved_data.appendChild( new XML('') );
saved_data.appendChild( new XML('~/Desktop') );
nyt_png_info_xml.contents = saved_data.toXMLString();
nyt_png_info.printable = false;
nyt_png_info.visible = false;
}
// get xml out of the 1 text item on that layer and parse it
if ( nyt_png_info.textFrames.length != 1 ) {
Window.alert( 'Please delete the nyt_png_info layer and try again.' );
} else {
try {
nyt_png_xml = new XML( nyt_png_info.textFrames[0].contents );
nyt_png_prefix = nyt_png_xml.nyt_prefix;
nyt_png_base_path = nyt_png_xml.nyt_path;
nyt_parse_success = true;
} catch ( e ) {
Window.alert( 'Please delete the nyt_png_info layer and try again.' );
}
}
if (nyt_parse_success) {
nyt_show_png_dialog();
}
function nyt_show_png_dialog() {
// figure out if there is stuff to process
var num_artboards = docRef.artboards.length;
var num_to_export = 0;
for (var i = 0; i < num_artboards; i++ ) {
var artboardName = docRef.artboards[i].name.toLowerCase();
if ( ! ( artboardName.match( /^artboard/ ) || artboardName.match( /^\-/ ) )){
num_to_export++;
}
}
// Export dialog
nyt_png_dlg = new Window('dialog', 'Export Artboards');
// PANEL to hold options
nyt_png_dlg.msgPnl = nyt_png_dlg.add('panel', undefined, 'Export Artboards as PNGs');
// PREFIX GRP
var prefixGrp = nyt_png_dlg.msgPnl.add('group', undefined, '')
prefixGrp.orientation = 'row';
prefixGrp.alignment = [ScriptUI.Alignment.LEFT, ScriptUI.Alignment.TOP]
var prefixSt = prefixGrp.add('statictext', undefined, 'File prefix:');
prefixSt.size = [100,20]
var prefixEt = prefixGrp.add('edittext', undefined, nyt_png_prefix);
prefixEt.size = [ 300,20 ];
// DIR GROUP
var dirGrp = nyt_png_dlg.msgPnl.add( 'group', undefined, '')
dirGrp.orientation = 'row'
dirGrp.alignment = [ScriptUI.Alignment.LEFT, ScriptUI.Alignment.TOP]
var dirSt = dirGrp.add('statictext', undefined, 'Output directory:');
dirSt.size = [ 100,20 ];
var dirEt = dirGrp.add('edittext', undefined, nyt_png_base_path);
dirEt.size = [ 300,20 ];
nyt_png_dlg.progBar = nyt_png_dlg.msgPnl.add( 'progressbar', undefined, 0, 100 );
nyt_png_dlg.progBar.size = [400,10]
nyt_png_dlg.progLabel = nyt_png_dlg.msgPnl.add('statictext', undefined, 'Will export ' + num_to_export + ' of ' + num_artboards + ' artboards in document' );
nyt_png_dlg.progLabel.size = [ 400,20 ];
var chooseBtn = dirGrp.add('button', undefined, 'Choose ...' );
chooseBtn.onClick = function() { nyt_png_base_path = Folder.selectDialog(); dirEt.text = nyt_png_base_path }
nyt_png_dlg.btnPnl = nyt_png_dlg.add('group', undefined, '');
nyt_png_dlg.btnPnl.orientation = 'row'
nyt_png_dlg.btnPnl.cancelBtn = nyt_png_dlg.btnPnl.add('button', undefined, 'Cancel', {name:'cancel'});
nyt_png_dlg.btnPnl.cancelBtn.onClick = function() { nyt_png_dlg.close() };
nyt_png_dlg.btnPnl.okBtn = nyt_png_dlg.btnPnl.add('button', undefined, 'Export', {name:'ok'});
nyt_png_dlg.btnPnl.okBtn.onClick = function() { nyt_png_prefix = prefixEt.text; nyt_run_export( num_to_export); };
nyt_png_dlg.show();
}
function nyt_run_export( num_to_export ) {
var num_exported = 0;
var num_artboards = docRef.artboards.length;
for (var i = 0; i < num_artboards; i++ ) {
var artboardName = docRef.artboards[i].name.toLowerCase();
// Skip artboards that start with "Artboard" or that start with a dash (-)
if ( ! ( artboardName.match( /^artboard/ ) || artboardName.match( /^\-/ ) )){
//$.writeln( artboardName );
var destFile = new File( nyt_png_base_path + "/" + nyt_png_prefix + artboardName + ".png");
var options = new ExportOptionsPNG24();
options.artBoardClipping = true;
options.matte = true;
docRef.artboards.setActiveArtboardIndex(i);
docRef.exportFile (destFile, ExportType.PNG24, options);
num_exported++;
nyt_png_dlg.progLabel.text = 'Exported ' + num_exported + ' of ' + num_to_export;
nyt_png_dlg.progBar.value = num_exported / num_to_export * 100;
nyt_png_dlg.update();
///progBar.notify("onDraw");
}
}
nyt_png_xml.nyt_path = nyt_png_base_path;
nyt_png_xml.nyt_prefix = nyt_png_prefix;
nyt_png_info.textFrames[0].contents = nyt_png_xml.toXMLString();
nyt_png_dlg.close();
}