簡體   English   中英

將符號批量導出到PNG-Illustrator

[英]Batch Export Symbols to PNG - Illustrator

我本來打算將其發布在https://graphicdesign.stackexchange.com/ ,但是由於這是一個代碼問題,因此在這里似乎更合適。

我想導出打開的Illustrator文檔中的所有符號以分隔 png。

以下javascript(.jsx)腳本確實很接近,但是導出的png為空,這告訴我仍然缺少一些實質內容。

缺少的元素可能是什么?

var doc = app.activeDocument;  
var symbolCount = doc.symbols.length;  

$.writeln(symbolCount + " symbols"); // log symbol count

for(var i = 0; i < doc.symbols.length; i++) {
    $.writeln(doc.symbols[i].name); // log symbol names

   var dir = doc.path; // save to document's folder
   dir.changePath(doc.symbols[i].name + '.png');
   savePNG(dir);
}

// Save PNG file

function savePNG(file) {
   // export SAVE-FOR-WEB options
   var exp = new ExportOptionsPNG24();
   exp.transparency = true;

   // export as SAVE-FOR-WEB
   doc.exportFile(file, ExportType.PNG24, exp);
}

PS。 這是Illustrator腳本文檔的鏈接: http : //adobe.ly/1JxLlUK

@shane

這是一個非常出色的腳本,感謝您的配合! 我在此基礎上構建了適合我的工作流程的軟件。 我注意到的一件事是,導出的PNG與符號內的圖形的尺寸不同。 下面是圖像導出的放大屏幕截圖;

由於尚未允許我發布圖片,所以這里有一個鏈接

83x83px矢量矩形已導出為84x83px PNG

我通過將符號放置在文檔的0,0處來糾正此問題

// place a symbol instance - temp
var symbol = doc.symbolItems.add(doc.symbols[i]);
    symbol.top = 0;
    symbol.left = 0;

然后讓代碼運行。 我自己不是程序員,但是可以正常工作。

doc.exportFile執行您要執行的操作-因此它將導出文檔的PNG。

要導出符號,請將每個符號一個一個地放置到您的文檔中,將整個內容導出為PNG(請注意,文檔本身的任何內容也將被導出!),然后再次刪除符號實例。

它僅需對for循環進行少量添加:

for(var i = 0; i < doc.symbols.length; i++) {
    $.writeln(doc.symbols[i].name); // log symbol names

    s = doc.symbolItems.add(doc.symbols[i]); // place a Symbol instance

   var dir = doc.path; // save to document's folder
   dir.changePath(doc.symbols[i].name + '.png');
   savePNG(dir);
   s.remove();  // .. and delete it here
}

這將為我的默認符號集生成以下文件列表:

符號png列表

對於需要此功能的其他人,這是我將腳本轉換為的內容:

感謝Jongware的幫助。

/*
 * Export Symbols as PNGs - 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();

            // 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]);

                // assign name
                var filename = (doc.symbols[i].name)

                // export symbols
                savePNG(dest, filename);

                // delete temp symbol instance
                symbol.remove();
            }
            // remove temp layer
            doc.layers[0].remove();
        }
    }

    function savePNG(dest, filename) {
        // save options
        var type = ExportType.PNG24;
        var options = new ExportOptionsPNG24();
        options.transparency = true;

        // file
        var file = new File(dest + "/" + filename);

        // export
        doc.exportFile(file, type, options);
    }

} else {
    alert("You don't have any symbols in this document");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM