Batch export grouped items as jpeg?

Hi there-
We have decided that it's time to switch to InDesign; we're paying for it as part of CS4 anyway (we will be upgrading when the next update is announced), and Quark just isn't doing what we need anymore. We're trying to take care of a few things before just jumping in, and I've found an issue with one of our tasks.
Our files are made up of anywhere from 5-15 individual ads, which are printed in a strip. Each of those individual ads needs to be exported as a jpeg so that it can be placed on our company's website. In Quark, we would run Gluon's XPress Image Pro, and it would find each grouped object and export it, but Gluon does not offer an ID version of this software. I'm hoping this is because there is some nifty little built-in trick that ID will do for me, but if that's not the case, if anyone could point me to a plug-in that is comparable to XIP, you would seriously make my day.
Thanks!

Thanks for your replies. All of those options work, but none of them create the type of automated workflow we currently have. Yes, we can choose to export the selection as a jpeg, but we would have to do that with each individual ad, something XIP does for us automatically. I really appreciate the help, but it doesn't appear that ID does this on its own. Does anyone know of a plug-in that is similar to XIP?

Similar Messages

  • Export selected items on each page in InDesign to JPEG

    Hi All,
    I have InDesign CS5.5. I have a document with more than 50 pages and each page has unique image and the description for image.
    I need to export each page as JPEG. but i don't want to export full page. i need only the items on each page. So i go to each page and select all the items and export. while exporting i use the same name of the image used in each page.
    I tried writing a script but it exports only the active page. i do not know how to navigate to the next page and export.
    is some one can help.
    below is my script.
    var myDoc = app.activeDocument;
    var myNumPages = myDoc.pages.length;  //get the number of pages
    var myFilePath = myDoc.filePath; //get the file path
    var myRectangle = app.activeWindow.activePage.allGraphics; //get the graphics of the active page
    var myPageName = app.activeWindow.activePage.name; //get the page name.
               if(myRectangle.length >1)
                        alert("the page has more than one image. Delete the other image to export");
                        exit();
    var myImageName = myRectangle[0].itemLink.name; //get the name of the image
    app.select(NothingEnum.NOTHING);
    for(var i=0; i<myNumPages; i++)
              app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.high;
              app.jpegExportPreferences.exportResolution = 300;
              app.jpegExportPreferences.jpegExportRange = ExportRangeOrAllPages.exportRange;
              app.jpegExportPreferences.pageString = myPageName;
              mySelectedItems();
    function mySelectedItems()
              var myObj = new Array;
              myObj = app.activeWindow.activePage.pageItems; 
              try
                                  app.activeWindow.activePage.groups.add(myObj);
                                  catch(e)
              app.select(app.activeWindow.activePage.allPageItems);
              app.selection[0].exportFile(ExportFormat.JPG, File(myFilePath+"/"+myImageName+".JPEG"), false);

    export all image of each page try like this
    var myDoc = app.activeDocument;
    var myFolder = myDoc.filePath;
    var myImage = myDoc.allGraphics;
    for (var i=0; myImage.length>i; i++){
        app.select(myImage[i]);
        var MyImageNmae  = myImage[i].itemLink.name;
        app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.high;
        app.jpegExportPreferences.exportResolution = 300;
           app.selection[0].exportFile(ExportFormat.JPG, File(myFolder+"/"+MyImageNmae+".JPEG"), false);
        alert(myImage[i].itemLink.name)

  • Batch export audio in channels grouped

    Hi!
    My english is not the best so I will try to explain myself as good as possible.
    I need to get the 5.1 audio from 11 sequences in discrete channels.
    I know how to do this from each and one sequence. Right Click->Export->Audio to AIFF (s)...
    But this takes a long time.
    Is it possible to make a batch export and get the same result.
    If I mark my sequences and choose batch export, the press settings I can only get the AIFFS as mono or stereo, but I cant get it as discrete channels.
    I want it to be as same when I choose one individually.
    When I use the method each one this is the result:
    Sequence name_1
    Sequence name_2
    Sequence name_3
    Sequence name_4
    Sequence name_5
    Sequence name_6
    I hope I have made my problem clear.
    Thank you for the help
    /Sebastian

    Hello.
    here is the full script. I made a few changes. Hope it works for you.
    #target indesign
    var saveFold; 
      function main(){   
         saveFold = Folder( Folder.desktop + '/Batch' );
            if ( ! saveFold.exists ) { saveFold.create(); }
       app.documents[0].groups.firstItem().select();
      //  app.swfExportPreferences.fitMethod  = FitMethodSettings.fitGivenScalePercentage;
    //    app.swfExportPreferences.fitOption = FitDimension.fit1024x768;
        app.swfExportPreferences.fitScale = 100;
      //  app.swfExportPreferences.pageRange = "Selection";
        app.swfExportPreferences.dynamicDocumentExportReaderSpreads = 0;
        app.swfExportPreferences.rasterizePages = false;
        app.swfExportPreferences.generateHTML = false;
        app.swfExportPreferences.viewSWFAfterExporting = false;
        app.swfExportPreferences.textExportPolicy = DynamicDocumentsTextExportPolicy.live;
        //app.swfExportPreferences.includeInteractivePageCurl = true;
        app.swfExportPreferences.rasterCompression = RasterCompressionOptions.losslessCompression;
        app.swfExportPreferences.jpegQualityOptions = DynamicDocumentsJPEGQualityOptions.maximum;
        app.swfExportPreferences.curveQuality = SWFCurveQualityValue.maximum;
        app.swfExportPreferences.rasterResolution = 100;
    for (var j=0; j<app.documents.length;j++){
    groupsToJPEGs (app.documents[j]);
    function groupsToJPEGs(doc) {
          var i, grps, expFile;
        grps = doc.groups;
        for ( i = 0; i < grps.length; i++ ) {
            expFile = File( saveFold + '/'+ doc.name + '_' + ( i + 1 ) + '.swf' );
            doc.groups[i].select();
            doc.groups[i].exportFile( ExportFormat.SWF, expFile, false );
    main();
    ps. Anyone can tell me how can i make the "advanced editor" as default for replies in this forum?
    Message was edited by: Vamitul

  • How batch export layers to files png in cc

    I am having trouble with an export layers to files script i am wanting to batch export layer to png and this script i have seems to be the one i want although every time i run the script i get this error message "could not complete the action  since the destination folder doesn't exist" the script required me to hard code my destination path the path i require is "C:/Users/Tim/Desktop/Backdrops/png/" I am not completely sure why its stating it does not exist any help would be greatly appreciated. i have tried to contact the creator but the post it was on was very old.
    // enable double clicking from the Macintosh Finder or the Windows Explorer
    #target photoshop
    //=================================================================
    // Globals
    //=================================================================
    var exportPath = "/Users/pedr/Documents/Work/Clients/Pathways/Learning_Hub/Source/Comics/export";
    exportPath = exportPath + '/layers';
    // UI strings to be localized
    var strTitle = localize("$$$/JavaScripts/X2L/Title=X2L");
    var strButtonRun = localize("$$$/JavaScripts/X2L/Run=Run");
    var strButtonCancel = localize("$$$/JavaScripts/X2L/Cancel=Cancel");
    var strHelpText = localize("$$$/JavaScripts/X2L/Help=Please specify the format and location for saving each layer as a file.");
    var strLabelDestination = localize("$$$/JavaScripts/X2L/Destination=Destination:");
    var strButtonBrowse = localize("$$$/JavaScripts/X2L/Browse=&Browse...");
    var strLabelFileNamePrefix = localize("$$$/JavaScripts/X2L/FileNamePrefix=File Name Prefix:");
    var strCheckboxVisibleOnly = localize("$$$/JavaScripts/X2L/VisibleOnly=&Visible Layers Only");
    var strLabelFileType = localize("$$$/JavaScripts/X2L/FileType=File Type:");
    var strCheckboxIncludeICCProfile = localize("$$$/JavaScripts/X2L/IncludeICC=&Include ICC Profile");
    var strJPEGOptions = localize("$$$/JavaScripts/X2L/JPEGOptions=JPEG Options:");
    var strLabelQuality = localize("$$$/JavaScripts/X2L/Quality=Quality:");
    var strCheckboxMaximizeCompatibility = localize("$$$/JavaScripts/X2L/Maximize=&Maximize Compatibility");
    var strTIFFOptions = localize("$$$/JavaScripts/X2L/TIFFOptions=TIFF Options:");
    var strLabelImageCompression = localize("$$$/JavaScripts/X2L/ImageCompression=Image Compression:");
    var strNone = localize("$$$/JavaScripts/X2L/None=None");
    var strPDFOptions = localize("$$$/JavaScripts/X2L/PDFOptions=PDF Options:");
    var strLabelEncoding = localize("$$$/JavaScripts/X2L/Encoding=Encoding:");
    var strTargaOptions = localize("$$$/JavaScripts/X2L/TargaOptions=Targa Options:");
    var strLabelDepth = localize("$$$/JavaScripts/X2L/Depth=Depth:");
    var strRadiobutton16bit = localize("$$$/JavaScripts/X2L/Bit16=16bit");
    var strRadiobutton24bit = localize("$$$/JavaScripts/X2L/Bit24=24bit");
    var strRadiobutton32bit = localize("$$$/JavaScripts/X2L/Bit32=32bit");
    var strBMPOptions = localize("$$$/JavaScripts/X2L/BMPOptions=BMP Options:");
    var strAlertSpecifyDestination = localize("$$$/JavaScripts/X2L/SpecifyDestination=Please specify destination.");
    var strAlertDestinationNotExist = localize("$$$/JavaScripts/X2L/DestionationDoesNotExist=Destination does not exist.");
    var strTitleSelectDestination = localize("$$$/JavaScripts/X2L/SelectDestination=Select Destination");
    var strAlertDocumentMustBeOpened = localize("$$$/JavaScripts/X2L/OneDocument=You must have a document open to export!");
    var strAlertNeedMultipleLayers = localize("$$$/JavaScripts/X2L/NoLayers=You need a document with multiple layers to export!");
    var strAlertWasSuccessful = localize("$$$/JavaScripts/X2L/Success= was successful.");
    var strUnexpectedError = localize("$$$/JavaScripts/X2L/Unexpected=Unexpected error");
    var strMessage = localize("$$$/JavaScripts/X2L/Message=X2L");
    var stretQuality = localize( "$$$/locale_specific/JavaScripts/X2L/ETQualityLength=30" );
    var stretDestination = localize( "$$$/locale_specific/JavaScripts/X2L/ETDestinationLength=160" );
    var strddFileType = localize( "$$$/locale_specific/JavaScripts/X2L/DDFileType=100" );
    var strpnlOptions = localize( "$$$/locale_specific/JavaScripts/X2L/PNLOptions=100" );
    var strPNG8Options = localize("$$$/JavaScripts/X2L/PNG8Options=PNG-8 Options:");
    var strCheckboxPNGTransparency = localize("$$$/JavaScripts/X2L/Transparency=Transparency");
    var strCheckboxPNGInterlaced = localize("$$$/JavaScripts/X2L/Interlaced=Interlaced");
    var strCheckboxPNGTrm = localize("$$$/JavaScripts/X2L/Trim=Trim Layers");
    var strPNG24Options = localize("$$$/JavaScripts/X2L/PNG24Options=PNG-24 Options:");
    // the drop down list indexes for file type
    var png24Index = 7;
    main();
    // Functions
    // Function: main
    // Usage: the core routine for this script
    // Input: <none>
    // Return: <none>
    function main() {
        if ( app.documents.length <= 0 ) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert( strAlertDocumentMustBeOpened );
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
        var exportInfo = new Object();
        initExportInfo(exportInfo);
        // look for last used params via Photoshop registry, getCustomOptions will throw if none exist
        try {
        catch(e) {
            // it's ok if we don't have any options, continue with defaults
        try {
            var docName = app.activeDocument.name;  // save the app.activeDocument name before duplicate.
            var layerCount = app.documents[docName].layers.length;
            var layerSetsCount = app.documents[docName].layerSets.length;
            if ((layerCount <= 1)&&(layerSetsCount <= 0)) {
                if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                    alert( strAlertNeedMultipleLayers );
                return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
            } else {
                var rememberMaximize;
                var needMaximize = exportInfo.psdMaxComp ? QueryStateType.ALWAYS : QueryStateType.NEVER;
                app.activeDocument = app.documents[docName];
                var duppedDocument = app.activeDocument.duplicate();
                duppedDocument.activeLayer = duppedDocument.layers[duppedDocument.layers.length-1]; // for removing
                setInvisibleAllArtLayers(duppedDocument);
                exportChildren(duppedDocument, app.documents[docName], exportInfo, duppedDocument, exportInfo.fileNamePrefix);
                duppedDocument.close( SaveOptions.DONOTSAVECHANGES );
                if ( rememberMaximize != undefined ) {
                    app.preferences.maximizeCompatibility = rememberMaximize;
                if ( DialogModes.ALL == app.playbackDisplayDialogs ) {
                    //alert(strTitle + strAlertWasSuccessful);
                app.playbackDisplayDialogs = DialogModes.ALL;
        } catch (e) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert(e);
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
    // Function: settingDialog
    // Usage: pop the ui and get user settings
    // Input: exportInfo object containing our parameters
    // Return: on ok, the dialog info is set to the exportInfo object
    function settingDialog(exportInfo) {
      return;
    // Function: hideAllFileTypePanel
    // Usage: hide all the panels in the common actions
    // Input: <none>, dlgMain is a global for this script
    // Return: <none>, all panels are now hidden
    function hideAllFileTypePanel() {
    // Function: initExportInfo
    // Usage: create our default parameters
    // Input: a new Object
    // Return: a new object with params set to default
    function initExportInfo(exportInfo) {
        //exportInfo.destination = new String(exportPath);
        exportInfo.fileNamePrefix = new String("untitled_");
        exportInfo.visibleOnly = false;
        exportInfo.fileType = png24Index;
        exportInfo.icc = true;
        exportInfo.png24Transparency = true;
        exportInfo.png24Interlaced = false;
        exportInfo.png24Trim = true;
        try {
            exportInfo.destination = Folder(new String(exportPath)).fsName; // destination folder
            var tmp = app.activeDocument.fullName.name;
            exportInfo.fileNamePrefix = decodeURI(tmp.substring(0, tmp.indexOf("."))); // filename body part
        } catch(someError) {
            exportInfo.destination = new String(exportPath);
            exportInfo.fileNamePrefix = app.activeDocument.name; // filename body part
    // Function: saveFile
    // Usage: the worker routine, take our params and save the file accordingly
    // Input: reference to the document, the name of the output file,
    //        export info object containing more information
    // Return: <none>, a file on disk
    function saveFile( docRef, fileNameBody, exportInfo) {
                saveFile(docRef, fileNameBody, exportInfo, false, true);
                function saveFile( docRef, fileNameBody, exportInfo, interlacedValue, transparencyValue) {
                var id6 = charIDToTypeID( "Expr" );
                    var desc3 = new ActionDescriptor();
                    var id7 = charIDToTypeID( "Usng" );
                        var desc4 = new ActionDescriptor();
                        var id8 = charIDToTypeID( "Op  " );
                        var id9 = charIDToTypeID( "SWOp" );
                        var id10 = charIDToTypeID( "OpSa" );
                        desc4.putEnumerated( id8, id9, id10 );
                        var id11 = charIDToTypeID( "Fmt " );
                        var id12 = charIDToTypeID( "IRFm" );
                        var id13 = charIDToTypeID( "PN24" );
                        desc4.putEnumerated( id11, id12, id13 );
                        var id14 = charIDToTypeID( "Intr" );
                        desc4.putBoolean( id14, interlacedValue );
                        var id15 = charIDToTypeID( "Trns" );
                        desc4.putBoolean( id15, transparencyValue );
                        var id16 = charIDToTypeID( "Mtt " );
                        desc4.putBoolean( id16, true );
                        var id17 = charIDToTypeID( "MttR" );
                        desc4.putInteger( id17, 255 );
                        var id18 = charIDToTypeID( "MttG" );
                        desc4.putInteger( id18, 255 );
                        var id19 = charIDToTypeID( "MttB" );
                        desc4.putInteger( id19, 255 );
                        var id20 = charIDToTypeID( "SHTM" );
                        desc4.putBoolean( id20, false );
                        var id21 = charIDToTypeID( "SImg" );
                        desc4.putBoolean( id21, true );
                        var id22 = charIDToTypeID( "SSSO" );
                        desc4.putBoolean( id22, false );
                        var id23 = charIDToTypeID( "SSLt" );
                            var list1 = new ActionList();
                        desc4.putList( id23, list1 );
                        var id24 = charIDToTypeID( "DIDr" );
                        desc4.putBoolean( id24, false );
                        var id25 = charIDToTypeID( "In  " );
                        desc4.putPath( id25, new File( exportPath + "C:/Users/Tim/Desktop/Backdrops/png/"  + fileNameBody + ".png") );
                    var id26 = stringIDToTypeID( "SaveForWeb" );
                    desc3.putObject( id7, id26, desc4 );
                executeAction( id6, desc3, DialogModes.NO );
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function zeroSuppress (num, digit) {
        var tmp = num.toString();
        while (tmp.length < digit) {
            tmp = "0" + tmp;
        return tmp;
    // Function: setInvisibleAllArtLayers
    // Usage: unlock and make invisible all art layers, recursively
    // Input: document or layerset
    // Return: all art layers are unlocked and invisible
    function setInvisibleAllArtLayers(obj) {
        for( var i = 0; i < obj.artLayers.length; i++) {
            obj.artLayers[i].allLocked = false;
            obj.artLayers[i].visible = false;
        for( var i = 0; i < obj.layerSets.length; i++) {
            setInvisibleAllArtLayers(obj.layerSets[i]);
    // Function: removeAllInvisibleArtLayers
    // Usage: remove all the invisible art layers, recursively
    // Input: document or layer set
    // Return: <none>, all layers that were invisible are now gone
    function removeAllInvisibleArtLayers(obj) {
        for( var i = obj.artLayers.length-1; 0 <= i; i--) {
            try {
                if(!obj.artLayers[i].visible) {
                    obj.artLayers[i].remove();
            catch (e) {
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            removeAllInvisibleArtLayers(obj.layerSets[i]);
    // Function: removeAllEmptyLayerSets
    // Usage: find all empty layer sets and remove them, recursively
    // Input: document or layer set
    // Return: empty layer sets are now gone
    function removeAllEmptyLayerSets(obj) {
        var foundEmpty = true;
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            if( removeAllEmptyLayerSets(obj.layerSets[i])) {
                obj.layerSets[i].remove();
            } else {
                foundEmpty = false;
        if (obj.artLayers.length > 0) {
            foundEmpty = false;
        return foundEmpty;
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function removeAllInvisible(docRef) {
        removeAllInvisibleArtLayers(docRef);
        removeAllEmptyLayerSets(docRef);
    // Function: exportChildren
    // Usage: find all the children in this document to save
    // Input: duplicate document, original document, export info,
    //        reference to document, starting file name
    // Return: <none>, documents are saved accordingly
    function exportChildren(dupObj, orgObj, exportInfo, dupDocRef, fileNamePrefix) {
        for( var i = 0; i < dupObj.artLayers.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.artLayers[i].visible) {
                    continue;
            dupObj.artLayers[i].visible = true;
            var layerName = dupObj.artLayers[i].name;  // store layer name before change doc
            var duppedDocumentTmp = dupDocRef.duplicate();
            if ((png24Index == exportInfo.fileType)||(png8Index == exportInfo.fileType)) { // PSD: Keep transparency
                removeAllInvisible(duppedDocumentTmp);
                //PNGFileOptions
                        if (activeDocument.activeLayer.isBackgroundLayer == false) { //is it anything but a background layer?
                            app.activeDocument.trim(TrimType.TRANSPARENT);
            } else { // just flatten
                duppedDocumentTmp.flatten();
            // Edit
            var docName = app.activeDocument.name;
            // For some reason indexOf fails if we include the '-', so we use 'copy' and decrement the index by 1.
            docName = docName.slice(0, docName.indexOf('copy')-1);
            var fileNameBody = (docName+'_'+layerName).toLowerCase();
            fileNameBody = fileNameBody.replace(/[:\/\\*\?\"\<\>\|]/g, "_");  // '/\:*?"<>|' -> '_'
            if (fileNameBody.length > 120) {
                fileNameBody = fileNameBody.substring(0,120);
            saveFile(duppedDocumentTmp, fileNameBody, exportInfo);
            duppedDocumentTmp.close(SaveOptions.DONOTSAVECHANGES);
            dupObj.artLayers[i].visible = false;
        for( var i = 0; i < dupObj.layerSets.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.layerSets[i].visible) {
                    continue;
            var fileNameBody = fileNamePrefix;
            fileNameBody += "_" + zeroSuppress(i, 4) + "s";
            exportChildren(dupObj.layerSets[i], orgObj.layerSets[i], exportInfo, dupDocRef, fileNameBody);  // recursive call
    // Function: objectToDescriptor
    // Usage: create an ActionDescriptor from a JavaScript Object
    // Input: JavaScript Object (o)
    //        object unique string (s)
    //        Pre process converter (f)
    // Return: ActionDescriptor
    // NOTE: Only boolean, string, number and UnitValue are supported, use a pre processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function objectToDescriptor (o, s, f) {
        o = {};
        var d = new ActionDescriptor;
        var l = o.reflect.properties.length;
        d.putString( app.charIDToTypeID( 'Msge' ), s );
        for (var i = 0; i < l; i++ ) {
            var k = o.reflect.properties[i].toString();
            if (k == "__proto__" || k == "__count__" || k == "__class__" || k == "reflect")
                continue;
            var v = o[ k ];
            k = app.stringIDToTypeID(k);
            switch ( typeof(v) ) {
                case "boolean":
                    d.putBoolean(k, v);
                    break;
                case "string":
                    d.putString(k, v);
                    break;
                case "number":
                    d.putDouble(k, v);
                    break;
                default:
                    if ( v instanceof UnitValue ) {
                        var uc = new Object;
                        uc["px"] = charIDToTypeID("#Rlt"); // unitDistance
                        uc["%"] = charIDToTypeID("#Prc"); // unitPercent
                        d.putUnitDouble(k, uc[v.type], v.value);
                    } else {
                        throw( new Error("Unsupported type in objectToDescriptor " + typeof(v) ) );
        return d;
    // Function: descriptorToObject
    // Usage: update a JavaScript Object from an ActionDescriptor
    // Input: JavaScript Object (o), current object to update (output)
    //        Photoshop ActionDescriptor (d), descriptor to pull new params for object from
    //        object unique string (s)
    //        JavaScript Function (f), post process converter utility to convert
    // Return: Nothing, update is applied to passed in JavaScript Object (o)
    // NOTE: Only boolean, string, number and UnitValue are supported, use a post processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function descriptorToObject (o, d, s, f) {
        var l = d.count;
        if (l) {
            var keyMessage = app.charIDToTypeID( 'Msge' );
            if ( d.hasKey(keyMessage) && ( s != d.getString(keyMessage) )) return;
        for (var i = 0; i < l; i++ ) {
            var k = d.getKey(i); // i + 1 ?
            var t = d.getType(k);
            strk = app.typeIDToStringID(k);
            switch (t) {
                case DescValueType.BOOLEANTYPE:
                    o[strk] = d.getBoolean(k);
                    break;
                case DescValueType.STRINGTYPE:
                    o[strk] = d.getString(k);
                    break;
                case DescValueType.DOUBLETYPE:
                    o[strk] = d.getDouble(k);
                    break;
                case DescValueType.UNITDOUBLE:
                    var uc = new Object;
                    uc[charIDToTypeID("#Rlt")] = "px"; // unitDistance
                    uc[charIDToTypeID("#Prc")] = "%"; // unitPercent
                    uc[charIDToTypeID("#Pxl")] = "px"; // unitPixels
                    var ut = d.getUnitDoubleType(k);
                    var uv = d.getUnitDoubleValue(k);
                    o[strk] = new UnitValue( uv, uc[ut] );
                    break;
                case DescValueType.INTEGERTYPE:
                case DescValueType.ALIASTYPE:
                case DescValueType.CLASSTYPE:
                case DescValueType.ENUMERATEDTYPE:
                case DescValueType.LISTTYPE:
                case DescValueType.OBJECTTYPE:
                case DescValueType.RAWTYPE:
                case DescValueType.REFERENCETYPE:
                default:
                    throw( new Error("Unsupported type in descriptorToObject " + t ) );
        if (undefined != f) {
            o = f(o);
    // Function: preProcessExportInfo
    // Usage: convert Photoshop enums to strings for storage
    // Input: JavaScript Object of my params for this script
    // Return: JavaScript Object with objects converted for storage
    function preProcessExportInfo(o) {
        o.tiffCompression = o.tiffCompression.toString();
        o.pdfEncoding = o.pdfEncoding.toString();
        o.targaDepth = o.targaDepth.toString();
        o.bmpDepth = o.bmpDepth.toString();
        return o;
    // Function: postProcessExportInfo
    // Usage: convert strings from storage to Photoshop enums
    // Input: JavaScript Object of my params in string form
    // Return: JavaScript Object with objects in enum form
    function postProcessExportInfo(o) {
        o.tiffCompression = eval(o.tiffCompression);
        o.pdfEncoding = eval(o.pdfEncoding);
        o.targaDepth = eval(o.targaDepth);
        o.bmpDepth = eval(o.bmpDepth);
        return o;
    // Function: StrToIntWithDefault
    // Usage: convert a string to a number, first stripping all characters
    // Input: string and a default number
    // Return: a number
    function StrToIntWithDefault( s, n ) {
        var onlyNumbers = /[^0-9]/g;
        var t = s.replace( onlyNumbers, "" );
        t = parseInt( t );
        if ( ! isNaN( t ) ) {
            n = t;
        return n;
    // End X2L.jsx

    I have put the like var exportPath = "~/Desktop/Backdrops/png/";  and have removed the exportPath = exportPath + '/layers';
    but when i run the script it still comes up with the error
    could not complete action since the destination folder does not exist
    if you are using the extendedscript toolkit would be able to run the script and see if you know were the problem is coming from i cant seem to understand why its not seeing the destination.
    thanks for all your help
    // enable double clicking from the Macintosh Finder or the Windows Explorer
    #target photoshop
    //=================================================================
    // Globals
    //=================================================================
    var exportPath = "~/Desktop/Backdrops/png/";
    // UI strings to be localized
    var strTitle = localize("$$$/JavaScripts/X2L/Title=X2L");
    var strButtonRun = localize("$$$/JavaScripts/X2L/Run=Run");
    var strButtonCancel = localize("$$$/JavaScripts/X2L/Cancel=Cancel");
    var strHelpText = localize("$$$/JavaScripts/X2L/Help=Please specify the format and location for saving each layer as a file.");
    var strLabelDestination = localize("$$$/JavaScripts/X2L/Destination=Destination:");
    var strButtonBrowse = localize("$$$/JavaScripts/X2L/Browse=&Browse...");
    var strLabelFileNamePrefix = localize("$$$/JavaScripts/X2L/FileNamePrefix=File Name Prefix:");
    var strCheckboxVisibleOnly = localize("$$$/JavaScripts/X2L/VisibleOnly=&Visible Layers Only");
    var strLabelFileType = localize("$$$/JavaScripts/X2L/FileType=File Type:");
    var strCheckboxIncludeICCProfile = localize("$$$/JavaScripts/X2L/IncludeICC=&Include ICC Profile");
    var strJPEGOptions = localize("$$$/JavaScripts/X2L/JPEGOptions=JPEG Options:");
    var strLabelQuality = localize("$$$/JavaScripts/X2L/Quality=Quality:");
    var strCheckboxMaximizeCompatibility = localize("$$$/JavaScripts/X2L/Maximize=&Maximize Compatibility");
    var strTIFFOptions = localize("$$$/JavaScripts/X2L/TIFFOptions=TIFF Options:");
    var strLabelImageCompression = localize("$$$/JavaScripts/X2L/ImageCompression=Image Compression:");
    var strNone = localize("$$$/JavaScripts/X2L/None=None");
    var strPDFOptions = localize("$$$/JavaScripts/X2L/PDFOptions=PDF Options:");
    var strLabelEncoding = localize("$$$/JavaScripts/X2L/Encoding=Encoding:");
    var strTargaOptions = localize("$$$/JavaScripts/X2L/TargaOptions=Targa Options:");
    var strLabelDepth = localize("$$$/JavaScripts/X2L/Depth=Depth:");
    var strRadiobutton16bit = localize("$$$/JavaScripts/X2L/Bit16=16bit");
    var strRadiobutton24bit = localize("$$$/JavaScripts/X2L/Bit24=24bit");
    var strRadiobutton32bit = localize("$$$/JavaScripts/X2L/Bit32=32bit");
    var strBMPOptions = localize("$$$/JavaScripts/X2L/BMPOptions=BMP Options:");
    var strAlertSpecifyDestination = localize("$$$/JavaScripts/X2L/SpecifyDestination=Please specify destination.");
    var strAlertDestinationNotExist = localize("$$$/JavaScripts/X2L/DestionationDoesNotExist=Destination does not exist.");
    var strTitleSelectDestination = localize("$$$/JavaScripts/X2L/SelectDestination=Select Destination");
    var strAlertDocumentMustBeOpened = localize("$$$/JavaScripts/X2L/OneDocument=You must have a document open to export!");
    var strAlertNeedMultipleLayers = localize("$$$/JavaScripts/X2L/NoLayers=You need a document with multiple layers to export!");
    var strAlertWasSuccessful = localize("$$$/JavaScripts/X2L/Success= was successful.");
    var strUnexpectedError = localize("$$$/JavaScripts/X2L/Unexpected=Unexpected error");
    var strMessage = localize("$$$/JavaScripts/X2L/Message=X2L");
    var stretQuality = localize( "$$$/locale_specific/JavaScripts/X2L/ETQualityLength=30" );
    var stretDestination = localize( "$$$/locale_specific/JavaScripts/X2L/ETDestinationLength=160" );
    var strddFileType = localize( "$$$/locale_specific/JavaScripts/X2L/DDFileType=100" );
    var strpnlOptions = localize( "$$$/locale_specific/JavaScripts/X2L/PNLOptions=100" );
    var strPNG8Options = localize("$$$/JavaScripts/X2L/PNG8Options=PNG-8 Options:");
    var strCheckboxPNGTransparency = localize("$$$/JavaScripts/X2L/Transparency=Transparency");
    var strCheckboxPNGInterlaced = localize("$$$/JavaScripts/X2L/Interlaced=Interlaced");
    var strCheckboxPNGTrm = localize("$$$/JavaScripts/X2L/Trim=Trim Layers");
    var strPNG24Options = localize("$$$/JavaScripts/X2L/PNG24Options=PNG-24 Options:");
    // the drop down list indexes for file type
    var png24Index = 7;
    main();
    // Functions
    // Function: main
    // Usage: the core routine for this script
    // Input: <none>
    // Return: <none>
    function main() {
        if ( app.documents.length <= 0 ) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert( strAlertDocumentMustBeOpened );
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
        var exportInfo = new Object();
        initExportInfo(exportInfo);
        // look for last used params via Photoshop registry, getCustomOptions will throw if none exist
        try {
        catch(e) {
            // it's ok if we don't have any options, continue with defaults
        try {
            var docName = app.activeDocument.name;  // save the app.activeDocument name before duplicate.
            var layerCount = app.documents[docName].layers.length;
            var layerSetsCount = app.documents[docName].layerSets.length;
            if ((layerCount <= 1)&&(layerSetsCount <= 0)) {
                if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                    alert( strAlertNeedMultipleLayers );
                return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
            } else {
                var rememberMaximize;
                var needMaximize = exportInfo.psdMaxComp ? QueryStateType.ALWAYS : QueryStateType.NEVER;
                app.activeDocument = app.documents[docName];
                var duppedDocument = app.activeDocument.duplicate();
                duppedDocument.activeLayer = duppedDocument.layers[duppedDocument.layers.length-1]; // for removing
                setInvisibleAllArtLayers(duppedDocument);
                exportChildren(duppedDocument, app.documents[docName], exportInfo, duppedDocument, exportInfo.fileNamePrefix);
                duppedDocument.close( SaveOptions.DONOTSAVECHANGES );
                if ( rememberMaximize != undefined ) {
                    app.preferences.maximizeCompatibility = rememberMaximize;
                if ( DialogModes.ALL == app.playbackDisplayDialogs ) {
                    //alert(strTitle + strAlertWasSuccessful);
                app.playbackDisplayDialogs = DialogModes.ALL;
        } catch (e) {
            if ( DialogModes.NO != app.playbackDisplayDialogs ) {
                alert(e);
            return 'cancel'; // quit, returning 'cancel' (dont localize) makes the actions palette not record our script
    // Function: settingDialog
    // Usage: pop the ui and get user settings
    // Input: exportInfo object containing our parameters
    // Return: on ok, the dialog info is set to the exportInfo object
    function settingDialog(exportInfo) {
      return;
    // Function: hideAllFileTypePanel
    // Usage: hide all the panels in the common actions
    // Input: <none>, dlgMain is a global for this script
    // Return: <none>, all panels are now hidden
    function hideAllFileTypePanel() {
    // Function: initExportInfo
    // Usage: create our default parameters
    // Input: a new Object
    // Return: a new object with params set to default
    function initExportInfo(exportInfo) {
        //exportInfo.destination = new String(exportPath);
        exportInfo.fileNamePrefix = new String("untitled_");
        exportInfo.visibleOnly = false;
        exportInfo.fileType = png24Index;
        exportInfo.icc = true;
        exportInfo.png24Transparency = true;
        exportInfo.png24Interlaced = false;
        exportInfo.png24Trim = true;
        try {
            exportInfo.destination = Folder(new String(exportPath)).fsName; // destination folder
            var tmp = app.activeDocument.fullName.name;
            exportInfo.fileNamePrefix = decodeURI(tmp.substring(0, tmp.indexOf("."))); // filename body part
        } catch(someError) {
            exportInfo.destination = new String(exportPath);
            exportInfo.fileNamePrefix = app.activeDocument.name; // filename body part
    // Function: saveFile
    // Usage: the worker routine, take our params and save the file accordingly
    // Input: reference to the document, the name of the output file,
    //        export info object containing more information
    // Return: <none>, a file on disk
    function saveFile( docRef, fileNameBody, exportInfo) {
                saveFile(docRef, fileNameBody, exportInfo, false, true);
                function saveFile( docRef, fileNameBody, exportInfo, interlacedValue, transparencyValue) {
                var id6 = charIDToTypeID( "Expr" );
                    var desc3 = new ActionDescriptor();
                    var id7 = charIDToTypeID( "Usng" );
                        var desc4 = new ActionDescriptor();
                        var id8 = charIDToTypeID( "Op  " );
                        var id9 = charIDToTypeID( "SWOp" );
                        var id10 = charIDToTypeID( "OpSa" );
                        desc4.putEnumerated( id8, id9, id10 );
                        var id11 = charIDToTypeID( "Fmt " );
                        var id12 = charIDToTypeID( "IRFm" );
                        var id13 = charIDToTypeID( "PN24" );
                        desc4.putEnumerated( id11, id12, id13 );
                        var id14 = charIDToTypeID( "Intr" );
                        desc4.putBoolean( id14, interlacedValue );
                        var id15 = charIDToTypeID( "Trns" );
                        desc4.putBoolean( id15, transparencyValue );
                        var id16 = charIDToTypeID( "Mtt " );
                        desc4.putBoolean( id16, true );
                        var id17 = charIDToTypeID( "MttR" );
                        desc4.putInteger( id17, 255 );
                        var id18 = charIDToTypeID( "MttG" );
                        desc4.putInteger( id18, 255 );
                        var id19 = charIDToTypeID( "MttB" );
                        desc4.putInteger( id19, 255 );
                        var id20 = charIDToTypeID( "SHTM" );
                        desc4.putBoolean( id20, false );
                        var id21 = charIDToTypeID( "SImg" );
                        desc4.putBoolean( id21, true );
                        var id22 = charIDToTypeID( "SSSO" );
                        desc4.putBoolean( id22, false );
                        var id23 = charIDToTypeID( "SSLt" );
                            var list1 = new ActionList();
                        desc4.putList( id23, list1 );
                        var id24 = charIDToTypeID( "DIDr" );
                        desc4.putBoolean( id24, false );
                        var id25 = charIDToTypeID( "In  " );
                        desc4.putPath( id25, new File( exportPath + "C:/Users/Tim/Desktop/Backdrops/png/"  + fileNameBody + ".png") );
                    var id26 = stringIDToTypeID( "SaveForWeb" );
                    desc3.putObject( id7, id26, desc4 );
                executeAction( id6, desc3, DialogModes.NO );
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function zeroSuppress (num, digit) {
        var tmp = num.toString();
        while (tmp.length < digit) {
            tmp = "0" + tmp;
        return tmp;
    // Function: setInvisibleAllArtLayers
    // Usage: unlock and make invisible all art layers, recursively
    // Input: document or layerset
    // Return: all art layers are unlocked and invisible
    function setInvisibleAllArtLayers(obj) {
        for( var i = 0; i < obj.artLayers.length; i++) {
            obj.artLayers[i].allLocked = false;
            obj.artLayers[i].visible = false;
        for( var i = 0; i < obj.layerSets.length; i++) {
            setInvisibleAllArtLayers(obj.layerSets[i]);
    // Function: removeAllInvisibleArtLayers
    // Usage: remove all the invisible art layers, recursively
    // Input: document or layer set
    // Return: <none>, all layers that were invisible are now gone
    function removeAllInvisibleArtLayers(obj) {
        for( var i = obj.artLayers.length-1; 0 <= i; i--) {
            try {
                if(!obj.artLayers[i].visible) {
                    obj.artLayers[i].remove();
            catch (e) {
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            removeAllInvisibleArtLayers(obj.layerSets[i]);
    // Function: removeAllEmptyLayerSets
    // Usage: find all empty layer sets and remove them, recursively
    // Input: document or layer set
    // Return: empty layer sets are now gone
    function removeAllEmptyLayerSets(obj) {
        var foundEmpty = true;
        for( var i = obj.layerSets.length-1; 0 <= i; i--) {
            if( removeAllEmptyLayerSets(obj.layerSets[i])) {
                obj.layerSets[i].remove();
            } else {
                foundEmpty = false;
        if (obj.artLayers.length > 0) {
            foundEmpty = false;
        return foundEmpty;
    // Function: zeroSuppress
    // Usage: return a string padded to digit(s)
    // Input: num to convert, digit count needed
    // Return: string padded to digit length
    function removeAllInvisible(docRef) {
        removeAllInvisibleArtLayers(docRef);
        removeAllEmptyLayerSets(docRef);
    // Function: exportChildren
    // Usage: find all the children in this document to save
    // Input: duplicate document, original document, export info,
    //        reference to document, starting file name
    // Return: <none>, documents are saved accordingly
    function exportChildren(dupObj, orgObj, exportInfo, dupDocRef, fileNamePrefix) {
        for( var i = 0; i < dupObj.artLayers.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.artLayers[i].visible) {
                    continue;
            dupObj.artLayers[i].visible = true;
            var layerName = dupObj.artLayers[i].name;  // store layer name before change doc
            var duppedDocumentTmp = dupDocRef.duplicate();
            if ((png24Index == exportInfo.fileType)||(png8Index == exportInfo.fileType)) { // PSD: Keep transparency
                removeAllInvisible(duppedDocumentTmp);
                //PNGFileOptions
                        if (activeDocument.activeLayer.isBackgroundLayer == false) { //is it anything but a background layer?
                            app.activeDocument.trim(TrimType.TRANSPARENT);
            } else { // just flatten
                duppedDocumentTmp.flatten();
            // Edit
            var docName = app.activeDocument.name;
            // For some reason indexOf fails if we include the '-', so we use 'copy' and decrement the index by 1.
            docName = docName.slice(0, docName.indexOf('copy')-1);
            var fileNameBody = (docName+'_'+layerName).toLowerCase();
            fileNameBody = fileNameBody.replace(/[:\/\\*\?\"\<\>\|]/g, "_");  // '/\:*?"<>|' -> '_'
            if (fileNameBody.length > 120) {
                fileNameBody = fileNameBody.substring(0,120);
            saveFile(duppedDocumentTmp, fileNameBody, exportInfo);
            duppedDocumentTmp.close(SaveOptions.DONOTSAVECHANGES);
            dupObj.artLayers[i].visible = false;
        for( var i = 0; i < dupObj.layerSets.length; i++) {
            if (exportInfo.visibleOnly) { // visible layer only
                if (!orgObj.layerSets[i].visible) {
                    continue;
            var fileNameBody = fileNamePrefix;
            fileNameBody += "_" + zeroSuppress(i, 4) + "s";
            exportChildren(dupObj.layerSets[i], orgObj.layerSets[i], exportInfo, dupDocRef, fileNameBody);  // recursive call
    // Function: objectToDescriptor
    // Usage: create an ActionDescriptor from a JavaScript Object
    // Input: JavaScript Object (o)
    //        object unique string (s)
    //        Pre process converter (f)
    // Return: ActionDescriptor
    // NOTE: Only boolean, string, number and UnitValue are supported, use a pre processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function objectToDescriptor (o, s, f) {
        o = {};
        var d = new ActionDescriptor;
        var l = o.reflect.properties.length;
        d.putString( app.charIDToTypeID( 'Msge' ), s );
        for (var i = 0; i < l; i++ ) {
            var k = o.reflect.properties[i].toString();
            if (k == "__proto__" || k == "__count__" || k == "__class__" || k == "reflect")
                continue;
            var v = o[ k ];
            k = app.stringIDToTypeID(k);
            switch ( typeof(v) ) {
                case "boolean":
                    d.putBoolean(k, v);
                    break;
                case "string":
                    d.putString(k, v);
                    break;
                case "number":
                    d.putDouble(k, v);
                    break;
                default:
                    if ( v instanceof UnitValue ) {
                        var uc = new Object;
                        uc["px"] = charIDToTypeID("#Rlt"); // unitDistance
                        uc["%"] = charIDToTypeID("#Prc"); // unitPercent
                        d.putUnitDouble(k, uc[v.type], v.value);
                    } else {
                        throw( new Error("Unsupported type in objectToDescriptor " + typeof(v) ) );
        return d;
    // Function: descriptorToObject
    // Usage: update a JavaScript Object from an ActionDescriptor
    // Input: JavaScript Object (o), current object to update (output)
    //        Photoshop ActionDescriptor (d), descriptor to pull new params for object from
    //        object unique string (s)
    //        JavaScript Function (f), post process converter utility to convert
    // Return: Nothing, update is applied to passed in JavaScript Object (o)
    // NOTE: Only boolean, string, number and UnitValue are supported, use a post processor
    //       to convert (f) other types to one of these forms.
    // REUSE: This routine is used in other scripts. Please update those if you
    //        modify. I am not using include or eval statements as I want these
    //        scripts self contained.
    function descriptorToObject (o, d, s, f) {
        var l = d.count;
        if (l) {
            var keyMessage = app.charIDToTypeID( 'Msge' );
            if ( d.hasKey(keyMessage) && ( s != d.getString(keyMessage) )) return;
        for (var i = 0; i < l; i++ ) {
            var k = d.getKey(i); // i + 1 ?
            var t = d.getType(k);
            strk = app.typeIDToStringID(k);
            switch (t) {
                case DescValueType.BOOLEANTYPE:
                    o[strk] = d.getBoolean(k);
                    break;
                case DescValueType.STRINGTYPE:
                    o[strk] = d.getString(k);
                    break;
                case DescValueType.DOUBLETYPE:
                    o[strk] = d.getDouble(k);
                    break;
                case DescValueType.UNITDOUBLE:
                    var uc = new Object;
                    uc[charIDToTypeID("#Rlt")] = "px"; // unitDistance
                    uc[charIDToTypeID("#Prc")] = "%"; // unitPercent
                    uc[charIDToTypeID("#Pxl")] = "px"; // unitPixels
                    var ut = d.getUnitDoubleType(k);
                    var uv = d.getUnitDoubleValue(k);
                    o[strk] = new UnitValue( uv, uc[ut] );
                    break;
                case DescValueType.INTEGERTYPE:
                case DescValueType.ALIASTYPE:
                case DescValueType.CLASSTYPE:
                case DescValueType.ENUMERATEDTYPE:
                case DescValueType.LISTTYPE:
                case DescValueType.OBJECTTYPE:
                case DescValueType.RAWTYPE:
                case DescValueType.REFERENCETYPE:
                default:
                    throw( new Error("Unsupported type in descriptorToObject " + t ) );
        if (undefined != f) {
            o = f(o);
    // Function: preProcessExportInfo
    // Usage: convert Photoshop enums to strings for storage
    // Input: JavaScript Object of my params for this script
    // Return: JavaScript Object with objects converted for storage
    function preProcessExportInfo(o) {
        o.tiffCompression = o.tiffCompression.toString();
        o.pdfEncoding = o.pdfEncoding.toString();
        o.targaDepth = o.targaDepth.toString();
        o.bmpDepth = o.bmpDepth.toString();
        return o;
    // Function: postProcessExportInfo
    // Usage: convert strings from storage to Photoshop enums
    // Input: JavaScript Object of my params in string form
    // Return: JavaScript Object with objects in enum form
    function postProcessExportInfo(o) {
        o.tiffCompression = eval(o.tiffCompression);
        o.pdfEncoding = eval(o.pdfEncoding);
        o.targaDepth = eval(o.targaDepth);
        o.bmpDepth = eval(o.bmpDepth);
        return o;
    // Function: StrToIntWithDefault
    // Usage: convert a string to a number, first stripping all characters
    // Input: string and a default number
    // Return: a number
    function StrToIntWithDefault( s, n ) {
        var onlyNumbers = /[^0-9]/g;
        var t = s.replace( onlyNumbers, "" );
        t = parseInt( t );
        if ( ! isNaN( t ) ) {
            n = t;
        return n;
    // End X2L.jsx

  • Action batch export issue with image trace

    So, currently I'm working on batch processing jpeg sequences using illustrator's image trace and distortion effects. I have batch exported the image traces of the sequences via Adobe bridge.  Now I'm trying to create an action which opens the .ai files containing those image traces, apply a graphic style to the trace, and export a png from that.  I'm banging my head against the wall trying to get this to work right now. If I do the steps (step by step... not using a recorded action) I want on a single file, it works great, but the moment I batch export using the action I've created, it puts the original .png image that the image trace was linked to, on top of the image. The result is a bunch of .png exports that look exactly like my original image sequence.  If I add a "save" function to the action and open the resulting .ai files, I can see that the image trace vectors are in the file. The "linked png" however visible on the layer above those vectors.  Anyone have any idea what I'm doing wrong? How do I get rid of that pesky linked image.
    Also, for anyone who might be thinking that it has something to do with expanding the image trace before applying effects, this issue I'm running into, I've determined, is happening higher up in the hierarchy of the actions... If I simply make an action to open the image trace illustrator file and save it back out, the same issue occurs... placing the .png "linked file" on top of the vector image.
    While I'm at it, I might as well ask if anyone knows how to change the illustrator default image trace preset.... Without being able to change it, or much less specify in the action sequence that I'd like to use a user created image trace preset rather than the default setting, it's greatly overcomplicating my workflow. Makes what could easily be one-step batch processing into two. Seems pretty silly if you ask me.
    Please, if you guys have any insights on this, let me know. It's super frustrating... By the way, if you're wondering what type of effect I'm going for, the idea (as well as some explanation into their own process) starts at 12:44 of this video (http://vimeo.com/77427470).
    THANKS!

    Just wanted to let you guys know, for anyone who might be having my same issue... My home computer, even after a fresh install of Illustrator, was still placing the linked jpeg over the traced vector shapes when batch exporting... I did however find a workaround.  Rather than using Bridge CS6 for the batch image tracing, I used Bridge CS5 to trace in Illustrator CS5. Then, I used Illustrator CS6 to batch export an action that imported and applied an effect to those image traced sequences.  When you do this, it forces you to expand the tracing on import (because of the difference in Illustrator versions I'm assuming).  This way, when you batch run the action, it's already working with expanded vector shapes.  Not sure why this works, but it does.
    Also, I was having some issues getting Illustrator to apply the graphic style when batch exporting. I got it to work by copying an object with that particular graphic style to the clipboard, then adding in the action I was running a "paste" command, followed by a "clear" command.  I can only assume that Illustrator was having issues loading custom graphics styles while batch exporting. The paste/delete technique is annoying, but gets it done.
    Anyways. Just wanted to check in on this one. I'm happy I was able to muscle my way through it all.

  • Script to batch export multiple Books (.indb) to PDF

    I have multiple InDesign Book files that I would like to batch export to PDFs, respectively. (Not looking to combine multiple books into a single PDF. Just a 1 to 1 PDF export for each Book file.)
    In googling for an answer, I found Peter Kahrel's script for doing just this for other InDesign files, but it does not work for Books. http://www.kahrel.plus.com/indesign/batch_convert.html
    Does anyone know of a solution (paid or otherwise) for this process?  Opening up each Book and exporting to PDF from the ID menu takes quite a bit of time when doing this for several dozen files.
    Looking forward to any discussion to come up with a solution if one can be found... Mr. Kahrel's javascript file is a binary js file, so it can't be modified as is, and other solutions I've found around the web don't clearly state that they work with Book files or not.

    try below code
    before run script close all indb file
    var fileFilters = "InDesign:*.indb*";
    var myFolder = Folder.selectDialog ("choose Folder", fileFilters, false);
    var files = myFolder.getFiles("*.indb");
    for(i = 0; i < files.length; i++)
           var theDocument = app.open(File(files[i]), true);
             with ( theDocument ) {
                alert ( theDocument.name)
                 exportPdf(theDocument)
    function exportPdf(theDocument)
          myFilePath = myFolder + "/" +  theDocument.name + "_" + ".pdf";
            myFile = new File(myFilePath);
              theDocument.exportFile(ExportFormat.pdfType, myFile, false, app.pdfExportPresets.item('[Smallest File Size]'));
    theDocument.close(SaveOptions.no)

  • InDesign Conditional text batch export with TOC update

    Hello Everyone,
    I'm just getting into the scripting, so bear with me please.
    I have an indesign document with several conditional text variations and a generated Table Of Contents. I've found -hans-'s batch exporting script which works perfectly, BUT, in my document there are conditional headings too, which have their impact on the TOC of course and sadly indesign's toc update is not live. So all I need, is add a line (or 2) in the script that selects and updates the TOC for me before exporting each PDF. I've tried labeling the TOC text frame (with script label) and invoke a menu action on it, but I think I didn't get the Syntax right. I guess for someone experienced this is a really simple task.
    Here is -hans-'s Conditional text batch exporting script:
    http://forums.adobe.com/message/4764443
    thanks for your help!
    wood1y

    Hi,
    Thank you for your answer. This is my syntax so far. All I did to -hans-'s script was, I tried to create a variable with a text frame that has the "TOC" label, select it with a .select action (found it on a forum) that doesn't work, and tried to invoke the update toc with app.scriptMenuActions.itemByID(71442).invoke(); which doesn't work either. So yes, as I told you, I'm a beginner.
    var nameOfThePDFExportPresetYouWantToUse = 'DiscManual' //please don't forget to set!
    var currDoc = app.activeDocument;
    var currFilePath = currDoc.filePath.absoluteURI + '/';
    var currFileName = currDoc.name.replace(/.indd/, '');
    var currConditions = currDoc.conditions;
    var myTOC = currDoc.textFrames.item("TOC")
    //set all conditions visible to false
    currConditions.everyItem().visible = false;
    l = currConditions.length;
    //cycle thru conditions
    while(l--){
    currCondition =  currConditions[l];
    //set actual condition visible to true
    currCondition.visible = true;
    currConditionName = currCondition.name
    //select TOC
    myTOC.select();
    //update TOC
    app.scriptMenuActions.itemByID(71442).invoke();
    //set pdfName
    var exportTo = File(currFilePath + currFileName + '_' + currConditionName +'.pdf');
    //Have a look here:
    //export PDF. to choose backgroundexport. use the second line of code
    //currDoc.exportFile(ExportFormat.PDF_TYPE, exportTo,false,  nameOfThePDFExportPresetYouWantToUse);
    currDoc.asynchronousExportFile(ExportFormat.PDF_TYPE, exportTo,false,  nameOfThePDFExportPresetYouWantToUse);
    //set actual condition visible to false
        currCondition.visible = false;

  • Batch Exporting File Naming Issue

    I have to batch export about 30 images at a time, but I am having an issue now that the "Export" piece of the action includes a specific file name in the "save in" property, where as it's supposed to only include the name of the containing folder. This causes all the images included in the batch to be saved with the same file name thus saving over the previous export each time. I cannot figure out how to execute the Save for Web and devices action without it recording the specific file name.
    My process is:
    - Open one image
    - Create a new Action (it begins recording)
    - Crop the image
    - Save for Web and devices (I leave the file name as is, but save it to a different folder) Ex. "annoying_child_screaming.jpeg"
    - Close without saving
    - Stop the action
    - File > Automate > Batch
    - I select the source folder with all the original photos
    - Specify a Destination folder (a different folder where all the cropped ones will be)
    - I don't select any checkboxes
    - File Naming: I leave the default "Document Name" + "extension" Starting serial#: 1
    When I hit okay, I can see Photoshop going through each image and doing the specified actions, but instead of preserving the original file name, it saves each one with the file name that I saved the first one when originally creating the action (Ex. it rewrites "annoying_child_screaming.jpeg" for each file)
    I just upgraded to CS5 from CS4 (where I hadn't been having this problem). I have compared my settings to a coworker's who's computer it does work on, but we can't figure out what's wrong. The difference is in the Export details in the Actions dialog box - where it has the "IN" property, usually only a folder location is specified, but on my comp, it also specifies the file name.
    Please help.

    When you record the save for web step use the original file name
    (you noted you did that in post 1)
    Is the name you used the same as the file
    you opened when recording the save for web step?
    Don't specify any destination in the batch dialog or the files will possibly
    be overwritten and you'll see the results your seeing.
    The destination is the folder you specified during the save for web step while recording the action.
    MTSTUNER
    Message was edited by: MTSTUNER

  • Batch Export Filename Errors

    When doing a batch export I receive a message:
    "Batch Export Filename Error
    The output filename for this item already exists for another item in the export queue.
    To continue the export, enter a new base output filename below and select ok."
    I then have to assign some random file name for each or the default mattes and titles in my timeline that are all named “color,” "Title 3D." So I am naming them “color1” “color2” etc. I just went through naming a ton of them and now it is asking me the same questions again!
    How can I avoid all of this?
    Thanks for your help!

    I have 4 tracks in the timeline:
    V4: Title 3D
    V3: Color (it is a black matte)
    V2: Video clip
    A3: audio
    A4: audio
    The video is cut into clips and I have copied-and-pasted many instances of the title and color clips so that it continuously plays during the duration of all of the video.
    I did a select all of the timeline and dragged everything to a new bin and did a batch export.
    Should I be doing this another way???? It just keeps asking me to rename the filenames over and over again and never gets anywhere.

  • Premiere CS5 Batch Export and Sony PMW-EX1R

    Hey Guys!
    I have multiple sequences that I need to batch export, and was wondering if there's some kind of plugin that I can use in order to do so.
    Normally, I would have to select each sequence, press Command M and place it into the render queue for Media Encoder. Is there a way I can do this by selecting a batch of sequences by highlighting them and send them into the Media Encoder's Render Queue at once, rather than individually?
    Also, we film on a Sony XDCAM PMW-EX1R and need a workflow to help us out with compression.
    We're working on MAC PRO's and so Media Encoder doesn't have a WMV compression setting for our computers, and the MOV settings give us weird bugs on our website. So to work around this we use Compressor to compress a raw file into various MOV and WMV movies and use Media Encoder to encode F4V files.
    We export from Media Encoder in h.264 with a .mp4 extension to try and replicate what our camera shoots in, but I have a feeling that that might not be the correct format to do this in because Compressor gives us this weird Frame issue where it places a single random Frame at the very beginning of our video.
    Is there a better export option for Sony XDCAM PMW-EX1R users that will give us a fairly small file size and also have great quality to match our original footage, as well as not having us have to wait long periods of time for export?
    We've tried
    Quicktime ProRes 422
    Quicktime Uncompressed
    Animation
    Jpeg Sequence
    And they all gave us extremely large file sizes (which I understood since they're lossless) and H.264 seemed to give us as big of a file size as FCP did with it's MOV files which is what we're trying to do.

    So you're saying that I basically have to pick either using a file that isn't good for delivering content, or selecting a file that's big in size and long to export?
    Well, look at it this way: if you want the highest quality output, you want to start with the highest quality source. If you're exporting from Premiere or through AME to a deliverable file--like a WMV or an H.264 MP4--you're all set, because you're accessing the original source media and unrendered effects as they exist in the Premiere Pro sequence. If you're exporting from a different app, you want the most pristine source file to create your deliverable.
    Let's say you make apple juice. If you get whole apples from the orchard and press them, you make some mighty delicious juice. However, if you're trying to cut down on shipping costs, and you have the farmer smash the apples into chunky apple sauce so that you can fit more apples in the same amount of space, you can still make juice... but it won't be quite as tasty It's sort of the same with encoding...
    An intermediate file will take up more space, because it's uncompressed (or less compressed), but it shouldn't take as long to generate, either--again, because you're not compressing it or you're compressing it less than your final deliverable. Obviously, there are dozens of codecs you could potentially use, so there's a fair bit of experimentation you need to do to determine the best combination for your purposes. There is no "one size fits all" when it comes to encoding, unfortunately; it's a path fraught with compromises.

  • Batch Export, Preset?

    Is there a way to make a preset for a Batch Export?
    On a related note, is there a way to save a Export Queue?

    Once you quit Final Cut, the contents of the export queue go bye-bye. I most often use the export queue to export batches of freeze frames, or several different selects from a single sequence, as it retains the ins & outs for each instance of the sequence you add to the queue.
    As far as I know, you have to set up the export queue each time if you have re-launched FCP, but you can add items to an existing batch to reuse the destination and settings within a single FCP session.

  • Problem batch exporting odd sized mp4's in After Effects?

    Just been given the great task of converting hours and hours of supplied image sequences into mp4/ h.264 files for playing through silverlight. I envisaged assembling these sequences with their supplied sound tracks in after effects and outputing to mp4 with h.264 encoding
    I'm working at a non broadcast size (1000 x 576)and cannot get the after effects h.264 exporter in the render queue (adobe media encoder) to swallow this size without throwing up an error. It wants me to stretch the footage to different sizes based on what few presets are available, when I want to maintain the current size.
    I know I can export exactly what I want via the file menu (file> export>MPEG4) or via quicktime if I export a lossless file first, but I can't batch that in a render queue & I will have quite a lot of files to set off.
    Is there any way to get the mpeg 4 render options as seen under file> export , working in the render queue as the standard options in the render queue seem limited?
    Alternatively can any anyone recommend a good batch mp4 encoder app in the event I cant get everything I want out of after effects?

    ok , i can see the problem.
    try this if you need to finish your work within the next couple of hours:
    use Ae render queue >> export quicktime >> Foto or Motion Jpeg >> download mpeg streamclip >> batch export to H264 mpeg4 >> done.
    do a few seconds of render tests b4 you send the whole bunch to the batch. also 4 mpeg streamclip.
    and if you are happy with the result, blame adobe...

  • Batch export of individual clips?  Premiere timeline to Media Encoder??

    I have a bunch of clips on a CS6 timeline.
    I want to batch encode them out.
    I'm trying to figure out how to take those clips to Media Encoder so I can batch export them out all at once.
    I've heard I can pull them all into a folder in CS6 and then batch export them out of that folder - though I can't seem to drag the clips en masse from the timeline to the folder (as I can in FCP7) - Premiere seems to only allow one clip to be dragged at a time.  Very tedious.  And the suggestion I read on the Forum doesn't quite match MY Premiere CS6 (the menu items are not the same).
    Any suggestions would be most appreciated...
    Ben

    Hi joe bloe,
    It is similar.  And then my question is: how do I get all the clips on the timeline into a bin in one drag and drop (not one at a time)?  And once it's in the bin, what are the menu steps to batch export?
    I have a vague memory of using the Media Encoder to batch out some clips several days ago - but can't remember if they came directly from a Premiere timeline...
    Apologies.  I'm in the middle of a complicated job, with three different type cameras going, two of which I haven't used before, and thus my brain is a bit fried for searching through manuals.
    Ben

  • HELP! Why does FCP Crash when Batch Exporting Freeze Frames?

    I have been Batch Exporting a lot of freeze frames recently but just last week FCP just started to crash when I tried exporting. It will let me export one single freeze frame but no batches. Also, when I open FCP now some of the freeze frames I have made looks what appear to be like green digital hits on them. I thought it was a space issue but I have plenty of room and I've taken out my FCP Preferences and nothing seems like it's working. I have final cut version 5.1.4 and the Error Message Reads: "The Batch Export failed for some items. Please review the status column to identify which items had errors." When I check the status it says "File Error: Unknown Folder" which I don't understand at all.
    Any ideas?
    Power Mac 10.4.10    
    Power Mac    

    Well it seems like it might be an OS or hardware problem rather than a FCP problem, however...
    Have you installed Diskwarrior on your startup drive? If not, do it, and try launching it from your startup drive and then try running it on all other drives.
    Describe your hardware configuration (you should really post all your system specs in your profile here). Can you change the batch export destination to another drive? Describe what your source material is, your sequence settings and the export settings. You might try changing your export settings.
    This is not normal behavior and I'm sure we can solve this.
    Message was edited by: Michael Grenadier

  • Batch Exporting of Different File Extensions

    Just a quick question for you Aperture Gurus. (Aperture 2)
    When exporting a large number of files of differnt file extension types, do you do all of them at once, or separte them into their different file extensions then batch export them.
    An expample might be:
    Eporting jpeg and raw files within a common album or file. I have been creating different albums, and batch exporting depending on the file extension. Has anyone tried batch exporting with different file types with success?
    Thanks
    Dan

    I taling about the original files. Lets say I have at least 2 different master files, jpeg, and, Canon RAW in the same folder or album. Now lets say I want to batch or bulk export them all in one shot. Both jpeg, and RAW exported in one function. I set the export presets that I would like, and hit the export button with both the RAW and jpeg selected.
    Do you see any concerns with doing this? I currently separate all my different files, jpeg, RAW, TIFF, etc, so I keep the exporting from messing up. I haven't actually tried mixing file types in an export function.
    I'm just wondering if anyone has had any sucess with mixed file type exports?
    Thanks
    Dan

Maybe you are looking for

  • How can I issue a warning if user exits without saving data first?

    One of our clients has his users fill the LC Designer PDFs on their web site. They request that the users get a "Do you really want to exit?" warning,  if they navigate away from the form, after having made changes to it. I was able to simulate the A

  • Master Data Governance & Implementation of SAP Master Data Objects

    I would like to get hold of a case study on Master Data Strategy Governance Framework and Implementation of governance processes for Master Data Objects acrosss all SAP Modules. Governance processes do not have to use SAP MDM for master data manageme

  • Formatting problems , after upgrading to 8.1.7 client

    Hi all Recently I upgraded my client to 8.1.7. Immedietly after that, one of my reports(Report Builder 6.0.8.12.1) which was printing fine, starting having more space between words , and that too only on the last page of the report. Kindly share any

  • OnPlus not providing new Contract/Warranty status updates

    The Cisco Contract/Warranty notification function in OnPlus is currently not providing new updates. The Product Contract/Warranty function of OnPlus displays product up-to-date information regarding the Contract status and Warranty for supported Cisc

  • 2 r/3 instances and one BW

    hi gurus, i am facing situation like getting 2 r/3 systems data into one BW. my 2 R/3 systems are ISR and AFS? how do i have to proceed, what could be the possible ways.. Thanx in Advance.