Quantcast
Channel: Adobe Community : Popular Discussions - Illustrator Scripting
Viewing all articles
Browse latest Browse all 12845

Problem with IllustratorSaveOptions not saving on Mac but work perfectly on Windows [extendscript]

$
0
0

Hey everyone- I am currently running Illustrator CS5 on Windows 7 using extendscript. My issue is this:

 

When testing this script on any Windows machine, my script runs as it should but when I try to run it on a Mac using Illustrator CS4, the PDFs save as they should, but the Illustrator file doesn't. The folder contains the PDFs but no Illustrator. I'm currently using CS5 and the IllustratorSaveOptions specify to save as a CS4 file. Any help would be appreciated. I've seen other posts showing IllustratorSaveOptions that  had  "+ 'ai'" and "+ '.pdf'" at the end of the file string. Could that have anything to do with it? The most important part of the script is towards the bottom. Here is my script:

 

 

#target illustrator
var myDoc = activeDocument;

var dateFormat = function () {
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
  timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
  timezoneClip = /[^-+\dA-Z]/g,
  pad = function (val, len) {
   val = String(val);
   len = len || 2;
   while (val.length < len) val = "0" + val;
   return val;
  };

// Regexes and supporting functions are cached through closure
return function (date, mask, utc) {
  var dF = dateFormat;

  // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
  if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
   mask = date;
   date = undefined;
  }

  // Passing date through Date applies Date.parse, if necessary
  date = date ? new Date(date) : new Date;
  if (isNaN(date)) throw SyntaxError("invalid date");

  mask = String(dF.masks[mask] || mask || dF.masks["default"]);

  // Allow setting the utc argument via the mask
  if (mask.slice(0, 4) == "UTC:") {
   mask = mask.slice(4);
   utc = true;
  }

  var _ = utc ? "getUTC" : "get",
   d = date[_ + "Date"](),
   D = date[_ + "Day"](),
   m = date[_ + "Month"](),
   y = date[_ + "FullYear"](),
   H = date[_ + "Hours"](),
   M = date[_ + "Minutes"](),
   s = date[_ + "Seconds"](),
   L = date[_ + "Milliseconds"](),
   o = utc ? 0 : date.getTimezoneOffset(),
   flags = {
    d:    d,
    dd:   pad(d),
    ddd:  dF.i18n.dayNames[D],
    dddd: dF.i18n.dayNames[D + 7],
    m:    m + 1,
    mm:   pad(m + 1),
    mmm:  dF.i18n.monthNames[m],
    mmmm: dF.i18n.monthNames[m + 12],
    yy:   String(y).slice(2),
    yyyy: y,
    h:    H % 12 || 12,
    hh:   pad(H % 12 || 12),
    H:    H,
    HH:   pad(H),
    M:    M,
    MM:   pad(M),
    s:    s,
    ss:   pad(s),
    l:    pad(L, 3),
    L:    pad(L > 99 ? Math.round(L / 10) : L),
    t:    H < 12 ? "a"  : "p",
    tt:   H < 12 ? "am" : "pm",
    T:    H < 12 ? "A"  : "P",
    TT:   H < 12 ? "AM" : "PM",
    Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
    o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
    S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
   };

  return mask.replace(token, function ($0) {
   return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
  });
};
}();

// Some common format strings
dateFormat.masks = {
"default":      "ddd mmm dd yyyy HH:MM:ss",
shortDate:      "m/d/yy",
mediumDate:     "mmm d, yyyy",
longDate:       "mmmm d, yyyy",
fullDate:       "dddd, mmmm d, yyyy",
shortTime:      "h:MM TT",
mediumTime:     "h:MM:ss TT",
longTime:       "h:MM:ss TT Z",
isoDate:        "yyyy-mm-dd",
isoTime:        "HH:MM:ss",
isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
dayNames: [
  "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
  "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
],
monthNames: [
  "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
  "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
return dateFormat(this, mask, utc);
};


var now = new Date();
var now_format = now.format("mmddyy");

/*with (myDoc) {
     for (var i = textFrames.length-1; i >= 0; i--) {
          textFrames[i].createOutline();
     }
     alert('Done…');
}
*/
function outlineDocText(  ) {

          if ( app.documents.length == 0 ) return;
 
  var myDoc = app.activeDocument;
 
          recurseLayers( myDoc.layers );
 
};

outlineDocText();

function recurseLayers( objArray ) {
 
          for ( var i = 0; i < objArray.length; i++ ) {
 
                    // Record previous value with conditional change
                    var l = objArray[i].locked;
                    if ( l ) objArray[i].locked = false;
 
                    // Record previous value with conditional change
                    var v = objArray[i].visible;
                    if ( !v ) objArray[i].visible = true;
 
                    outlineText( objArray[i].textFrames );
 
                    // Recurse the contained layer collection
                    if ( objArray[i].layers.length > 0 ) {
                              recurseLayers( objArray[i].layers )
                    }
 
                    // Recurse the contained group collection
                    if ( objArray[i].groupItems.length > 0 ) {
                              recurseGroups( objArray[i].groupItems )
                    }
 
                    // Return to previous values
                    objArray[i].locked = l;
                    objArray[i].visible = v;
          }
};

function recurseGroups( objArray ) {
 
          for ( var i = 0; i < objArray.length; i++ ) {
 
                    // Record previous value with conditional change
                    var l = objArray[i].locked;
                    if ( l ) objArray[i].locked = false;
 
                    // Record previous value with conditional change
                    var h = objArray[i].hidden;
                    if ( h ) objArray[i].hidden = false;
 
                    outlineText( objArray[i].textFrames );
 
                    // Recurse the contained group collection
                    if ( objArray[i].groupItems.length > 0 ) {
                              recurseGroups( objArray[i].groupItems )
                    }
 
                    // Return to previous values
                    objArray[i].locked = l;
                    objArray[i].hidden = h;
          }
};


function outlineText( objArray ) {
 
          // Reverse this loop as it brakes the indexing
          for ( var i = objArray.length-1; i >= 0; i-- ) {
 
                    // Record previous value with conditional change
                    var l = objArray[i].locked;
                    if ( l ) objArray[i].locked = false;
 
                    // Record previous value with conditional change
                    var h = objArray[i].hidden;
                    if ( h ) objArray[i].hidden = false;
 
                    var g = objArray[i].createOutline(  );
 
                    // Return new group to previous Text Frame values
                    g.locked = l;
                    g.hidden = h;
 
          }

};


var myPermission =confirm ("Are you sure you're ready to save?","","Save Script Execution")
if (myPermission){
var myFileName = prompt ("Enter Filename","");
if (myFileName){
var destFolder = Folder.selectDialog('Select which folder to save to Katie:');
}
else
alert ("Save cancelled");
}
if (destFolder) { 

/*Save as Illustrator CS4*/
var IFile = new File(destFolder + '/' + myFileName);              
var ISave = new IllustratorSaveOptions();
    with (ISave){
        compatibility = Compatibility.ILLUSTRATOR14;
          
}
   /*Save as standard PDF*/
    var IPreset = '[Illustrator Default]'
    var pdfSave = new PDFSaveOptions();
    var pdfFile = new File(destFolder + '/' + myFileName);
        with (pdfSave){
             pDFPreset = IPreset;
             viewAfterSaving = false;
             compatibility = PDFCompatibility.ACROBAT5;
            
}

/*Save as smallest PDF*/
var SmallestPDF = '[Smallest File Size]';
var pdfSaveOpts = new PDFSaveOptions();  
var pdfFileCompressed = new File(destFolder + '/' + myFileName +'%2e' + now_format);
    with (pdfSaveOpts){
        compatibility = PDFCompatibility.ACROBAT5;   
        pDFPreset = SmallestPDF;
        viewAfterSaving = false;
}
destFolder.execute()
myDoc.saveAs (IFile, ISave)
myDoc.saveAs(pdfFile, pdfSave) 
myDoc.saveAs(pdfFileCompressed, pdfSaveOpts)

}


else {
alert("Save cancelled!")  

}



Viewing all articles
Browse latest Browse all 12845

Trending Articles