2013-05-14 45 views
0

我被要求为Adobe Illustrator CS创建一个小脚本,该脚本会自动将项目导出为具有特定选项的eps。作为eps导出的Illustrator脚本

无论如何,我整个上午都在看着它,来到一堵砖墙。在Adobe的脚本参考中,我发现了这些方法:EPSSaveOptions或ExportOptionsFlash,ExportOptionsGIF等。没有导出EPS的方法?注意:保存eps不好,必须导出。

所以我的问题是,我错过了什么,有一个更全面的方法列表,我找不到,或者是通过从头开始编码的一切方法来实现这一目标的唯一方法? 我真的不能做后者,因为我是设计师而不是程序员。

非常感谢您提前给出答案。

P.S.脚本语言并不重要,我只是更多地关注VBS,但如果这可以通过JavaScript来实现,我将非常乐意使用js。

回答

1

类似的脚本already exists

如果你想看看它的工作原理,你可以看看那里的源代码。

+0

你看,这就是问题,就像我在我的问题中说的那样,因为EPS保存不好,我需要导出它。不要问为什么,这只是法规。该脚本使用不同的方法和不同的保存选项。 – MrMag 2013-05-14 11:13:37

0

嗨,我不能完全回答你的问题。但我来到这里是因为我需要批量导出wmf文件到eps。我在the adobe forum找到了一个脚本,它将wmf转换为ai。结合您的想法使用eps对象EPSSaveOptions,我想出了这个工作脚本(用于插图画家CC 2015)。

我希望这可以帮助其他人看到这篇文章。

// script.name = makeAiFilesPDFcompatible.jsx; 
// script.description = opens and resaves Ai files with PDF compatibility checked (Folder Batch); 
// script.requirements = none 
// script.parent = CarlosCanto // 06/4/2013; 
// script.elegant = false; 
// script.forumPost = http://forums.adobe.com/thread/1224874?tstart=0 

var folder = Folder.selectDialog("Select Source Folder..."); // select folder 

if (folder==null) { 
        alert("Good Bye"); 
} 

else { 

    var files = find_files (folder, ['.wmf']); 

      var fileCount = files.length; // count them 





      if (fileCount>0) { 

        for (i=0; i<fileCount; i++) { 

      var idoc = app.open(files[i]); 

      var saveOpts = new EPSSaveOptions(); 

      saveOpts.pdfCompatible = true; 

      idoc.saveAs(files[i], saveOpts); 

      idoc.close(); 

        } 

     alert(fileCount + ' file(s) processed'); 

      } 

      else { 

        alert("There are no Illustrator files in this folder."); 

      } 

} 



// recurse subfolders - Peter Kharel 

function find_files (dir, mask_array){ 

    var arr = []; 

    for (var i = 0; i < mask_array.length; i++){ 

     arr = arr.concat (find_files_sub (dir, [], mask_array[i].toUpperCase())); 

    } 

    return arr; 

} 



function find_files_sub (dir, array, mask){ 

    var f = Folder (dir).getFiles ('*.*'); 

    for (var i = 0; i < f.length; i++){ 

     if (f[i] instanceof Folder){ 

      find_files_sub (f[i], array, mask); 

     } else if (f[i].name.substr (-mask.length).toUpperCase() == mask){ 

      array.push (f[i]); 

     } 

    } 

    return array; 

} 
0

这个将每个图层导出到带有选项的eps。 分离函数saveEPS,我想这就是你需要的。

var doc = app.activeDocument; 
var docname = (doc.name.split('.'))[0]; // name 
var doc_artboard = doc.artboards[0].artboardRect; 

if (app.documents.length > 1) { 
     alert("Nur ein Dokument darf geöffnet sein. Schließen Sie andere Dokumente und führen Sie das Script erneut aus."); 
} else { 

    var ok = confirm("Bitte speichern Sie zuerst Ihr Original.\nDie Ebenen werden im gleichen Ordner wie Ihre Datei gespeichert.\nWeiter?"); 

    if (ok) { 

     // prepare layers 
     for(var i=0; i<doc.layers.length; i++) { 
      doc.layers[i].visible = false; 
     } 

     // go through each layers 
     for(var i=0; i<doc.layers.length; i++) { 
      app.activeDocument = doc; 

      if (i>0) doc.layers[i-1].visible = false; 
      doc.layers[i].visible = true; 
      doc.activeLayer = doc.layers[i]; 

      saveEPS(doc.path, doc.activeLayer.name, i); 
     } 

     // close original file without saving 
     doc.close(SaveOptions.DONOTSAVECHANGES); 

    } 

} 

function saveEPS(path, name, id) { 

    var currlayer = doc.layers[id]; 
    var g = currlayer.groupItems.add(); 
    group(g, currlayer.pageItems);  

    var t = g.top; 
    var l = g.left; 

    var w = doc.width; 
    var h = doc.height; 

    /* 
    var w = 31.1*2.834645; 
    var h = 28.15*2.834645; 
    */ 

    var myPreset = new DocumentPreset; 
    myPreset.width = w; 
    myPreset.height = h; 
    myPreset.units = RulerUnits.Millimeters; 
    myPreset.title = docname; 
    var newdoc = documents.addDocument("Druck", myPreset); 
    /* 
    var newdoc = app.documents.add (doc.documentColorSpace, doc.width, doc.height, 1, 
    DocumentArtboardLayout.Row, 72); 
    */ 
    newdoc.artboards[0].artboardRect = doc_artboard; 
    var newlayer = newdoc.layers[0]; 

    g.duplicate(newlayer, ElementPlacement.PLACEATBEGINNING); 
    newlayer.pageItems[0].top = t; 
    newlayer.pageItems[0].left = l; 

    path.changePath(name+".eps"); 

    var saveOpts = new EPSSaveOptions(); 
    saveOpts.compatibility = Compatibility.ILLUSTRATOR16; 
    saveOpts.embedLinkedFiles = true; 
    saveOpts.includeDocumentThumbnails = true; 
    saveOpts.embedAllFonts = true; 
    saveOpts.saveMultipleArtboards = false; 
    saveOpts.cmykPostScript = true; 
    saveOpts.preview = EPSPreview.TRANSPARENTCOLORTIFF; 

    newdoc.saveAs(path, saveOpts); 
    newdoc.close(SaveOptions.DONOTSAVECHANGES); 

    // wait for the new file to save and close before continue. 
    // A callback function (if possible) will be better than a while loop for sure. 
    while (app.documents.length > 1) { 
     continue; 
    } 
} 

function group(gg, items) { 

    var newItem; 
    for(var i=items.length-1; i>=0; i--) { 

     if (items[i]!=gg) { 
      newItem = items[i].move (gg, ElementPlacement.PLACEATBEGINNING); 
     } 
    } 
    return newItem; 
}