我被要求为Adobe Illustrator CS创建一个小脚本,它会自动将项目导出为具有特定选项的eps。
Anywho,整个上午我都在调查它,然后来到了一堵砖墙。在adobe的脚本参考中,我发现了以下方法:EPSSaveOptions或ExportOptionsFlash,ExportOptionsGIF等。没有导出EPS的方法?注意:保存eps不好,必须导出。
所以我的问题是,我错过了什么,有一个更全面的方法列表,我找不到,或者是通过从头开始编码来实现这一目标的唯一方法? 我不能真正做到后者,因为我是一名设计师,而不是程序员。
提前感谢您的回答。
P.S。脚本语言并不重要,我只是更多地研究了VBS,但如果可以用javascript完成,我会非常乐意用js来实现。
答案 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;
}