【问题标题】:Illustrator script for exporting as eps用于导出为 eps 的 Illustrator 脚本
【发布时间】:2013-05-14 10:52:05
【问题描述】:

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

不管怎样,我整个上午都在研究它,结果发现了一堵砖墙。在 adobe 的脚本参考中,我找到了这些方法:EPSSaveOptions 或 ExportOptionsFlash、ExportOptionsGIF 等。没有导出 EPS 的方法?注意:保存eps不好,必须导出。

所以我的问题是,我是否遗漏了一些东西并且有一个我找不到的更全面的方法列表,或者是通过从头开始编写所有代码来完成此任务的唯一方法? 后者我真的做不到,因为我是设计师而不是程序员。

提前感谢您的回答。

附:脚本语言无关紧要,我只是更多地研究了VBS,但如果这可以用javascript来完成,我会很乐意用js来完成。

【问题讨论】:

    标签: adobe-illustrator eps


    【解决方案1】:

    类似的脚本already exists

    如果您想了解它的工作原理,可以查看那里的源代码。

    【讨论】:

    • 你看,这就是问题所在,就像我在问题中所说的那样,SAVING as eps 不好,我需要导出它。不要问为什么,这只是规定。该脚本使用不同的方法和不同的保存选项。
    【解决方案2】:

    您好,我无法完全回答您的问题。但是我来这里是因为我需要批量导出 wmf 文件到 eps。我在the adobe forum 找到了一个将 wmf 转换为 ai 的脚本。结合您使用 eps 对象 EPSSaveOptions 的想法,我想出了这个工作脚本(适用于 illustrator 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;
    
    }
    

    【讨论】:

    • 我稍微修改了您的脚本,使其更加用户友好 - 请参阅 github
    【解决方案3】:

    这个将每一层导出为带有选项的 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2023-03-21
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 2020-07-24
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多