导出的以图例解释者脚本作为eps

时间:2013-05-14 10:52:06

标签: adobe-illustrator eps

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

Anywho,整个上午我都在调查它,然后来到了一堵砖墙。在adobe的脚本参考中,我发现了以下方法:EPSSaveOptions或ExportOptionsFlash,ExportOptionsGIF等。没有导出EPS的方法?注意:保存eps不好,必须导出。

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

提前感谢您的回答。

P.S。脚本语言并不重要,我只是更多地研究了VBS,但如果可以用javascript完成,我会非常乐意用js来实现。

2 个答案:

答案 0 :(得分:1)

类似的脚本already exists

如果你想看看它是如何工作的,你可以看一下那里的源代码。

答案 1 :(得分: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;
}