批量导出符号到SVG-Illustrator
Batch Export Symbols to SVG - Illustrator
本文关键字:SVG-Illustrator 符号 更新时间:2023-09-26
问题:
我创建了一个脚本,它遍历Illustrator文档中的所有符号,并将它们导出为PNG。
我也需要它来为SVG工作,但是,它并不像更改文件类型那么简单。
由于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
想好了:(
如果您需要使用以下脚本,请随意使用。
/*
* 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");
}
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何更改<svg>标记为<img>用js标记
- 锚点元素不't使用svg时,请打开EDGE上的href
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 使用onclick绘制SVG路径
- SVG/JavaScript:尝试选择和更改多边形点
- 顺时针旋转Svg元件
- 禁用SVG拖动
- 在select元素中显示highchart dashstyle(svg)
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 缩放Raphael/SVG容器以适应所有内容
- JavaScript-动态SVG-onload属性-未触发事件
- 设置动画时,SVG/Raphael大圆圈会变形
- 使用Illustrator SVG 1.0或1.1以及三个.js和d3
- 转换adobe illustrator(或SVG)文件到KineticJS路径
- Illustrator/SVG到JavaScript工作流?(模板库?)
- 我如何使用javascript在运行时将svg从illustrator添加到DOM
- 批量导出符号到SVG-Illustrator
- 访问SVG DOM/'g'在Adobe Illustrator中创建的元素