问题:
我创建了一个脚本,它遍历Illustrator文档中的所有符号,并将它们作为PNG导出。
我也需要它为SVGs工作,然而,它并不像更改文件类型那么简单。
由于Illustrator的默认行为是使最近保存的svg成为app.activeDocument,因此for循环为每个符号嵌套新目录。
例如:
exports/
symbol01.svg
exports/
symbol02.svg
exports/
symbol03.svg
etc..我很确定问题在//create directory和//choose directory之间,但我无法在我的一生中找到答案。
var doc = app.activeDocument;
var symbolCount = doc.symbols.length;
if (symbolCount >= 1) {
if (confirm("Are all your layers hidden?")) {
// create temp layer
doc.layers.add();
for (var i = 0; i < doc.symbols.length; i++) {
// place a symbol instance - temp
var s = doc.symbolItems.add(doc.symbols[i]);
// create directory
var dest = new Folder(doc.path + "/exports");
if (!dest.exists) dest.create();
// choose directory
dest.changePath(doc.symbols[i].name);
// export symbols
saveSVG(dest);
// delete temp symbol instance
s.remove();
}
// remove temp layer
doc.layers[0].remove();
}
function saveSVG(file) {
// save options
var type = ExportType.SVG;
var options = new ExportOptionsSVG();
// export
doc.exportFile(file, type, options);
}
} else {
alert("You don't have any symbols in this document");
}有一种存储初始app.activeDocument的方法可能会解决这个问题,但我不知道如何做到这一点。如果这是最好的方法?
奖金:
这个脚本的另一个问题是图板没有调整到符号的大小,所以我找到了一个函数fitArtboardToSelectedArt(),我尝试了实现它,但没有成功。有谁能解释一下应该怎么做吗?
PS。下面是Illustrator脚本文档的链接:http://adobe.ly/1JxLlUK
发布于 2015-07-31 15:00:22
)算出来:)
如果您需要这样做的话,可以随意使用以下脚本。
/*
* Export Symbols as SVGs - Illustrator
* --------------------------------------
* Created By Shane Parsons - 30PT Design Inc.
* http://30ptdesign.com/
*/
var doc = app.activeDocument;
var symbolCount = doc.symbols.length;
if (symbolCount >= 1) {
if (confirm("Are all your layers hidden?")) {
// choose directory
var dest = Folder(doc.path).selectDlg();
// folder chosen
if (dest) {
// create temp layer
doc.layers.add();
// create temp artboard
doc.artboards.add(doc.artboards[0].artboardRect);
// get temp artboard
var tempAB = doc.artboards.getActiveArtboardIndex();
// loop through symbols
for (var i = 0; i < doc.symbols.length; i++) {
// place a symbol instance - temp
var symbol = doc.symbolItems.add(doc.symbols[i]);
// resize artboard
doc.artboards[tempAB].artboardRect = doc.visibleBounds;
app.redraw();
// choose directory
var filename = doc.symbols[i].name;
// export symbols
saveSVG(dest, filename);
// delete temp symbol instance
symbol.remove();
}
// remove temp layer
doc.layers[0].remove();
// remove temp artboard
doc.artboards[tempAB].remove();
}
}
function saveSVG(dest, filename) {
// save options
var type = ExportType.SVG;
var options = new ExportOptionsSVG();
// file
var file = new File(dest + "/" + filename);
// export
doc.exportFile(file, type, options);
}
} else {
alert("You don't have any symbols in this document");
}https://stackoverflow.com/questions/31748118
复制相似问题