2013-05-14 78 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; 
}