Skip to content

Instantly share code, notes, and snippets.

@seltzered
Last active December 15, 2024 22:06
Show Gist options
  • Save seltzered/4405256 to your computer and use it in GitHub Desktop.
Save seltzered/4405256 to your computer and use it in GitHub Desktop.
Quick little script to batch-convert Illustrator .ai's to .svg's, based on Adobe's sample 'save to pdf's' script. Save it to a jsx, and load it under illustrator. Intended for Illustrator CS6.
/**********************************************************
ADOBE SYSTEMS INCORPORATED
Copyright 2005-2010 Adobe Systems Incorporated
All Rights Reserved
NOTICE: Adobe permits you to use, modify, and
distribute this file in accordance with the terms
of the Adobe license agreement accompanying it.
If you have received this file from a source
other than Adobe, then your use, modification,
or distribution of it requires the prior
written permission of Adobe.
*********************************************************/
/**********************************************************
Save as SVGs.jsx
DESCRIPTION
This sample gets files specified by the user from the
selected folder and batch processes them and saves them
as SVGs in the user desired destination with the same
file name.
Based on Adobe's "Save as PDFs" sample script, intended for Illustrator CS6
**********************************************************/
// Main Code [Execution of script begins here]
// uncomment to suppress Illustrator warning dialogs
// app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
var destFolder, sourceFolder, files, fileType, sourceDoc, targetFile, svgSaveOpts;
// Select the source folder.
sourceFolder = Folder.selectDialog( 'Select the folder with Illustrator files you want to convert to SVG', '~' );
// If a valid folder is selected
if ( sourceFolder != null )
{
files = new Array();
fileType = prompt( 'Select type of Illustrator files to you want to process. Eg: *.ai', ' ' );
// Get all files matching the pattern
files = sourceFolder.getFiles( fileType );
if ( files.length > 0 )
{
// Get the destination to save the files
destFolder = Folder.selectDialog( 'Select the folder where you want to save the converted SVG files.', '~' );
for ( i = 0; i < files.length; i++ )
{
sourceDoc = app.open(files[i]); // returns the document object
// Call function getNewName to get the name and file to save the SVG
targetFile = getNewName();
// Call function getSVGOptions get the SVGSaveOptions for the files
svgSaveOpts = getSVGOptions( );
// Save as svg
sourceDoc.exportFile(targetFile, ExportType.SVG, svgSaveOpts );
sourceDoc.close();
}
alert( 'Files are saved as SVG in ' + destFolder );
}
else
{
alert( 'No matching files found' );
}
}
/*********************************************************
getNewName: Function to get the new file name. The primary
name is the same as the source file.
**********************************************************/
function getNewName()
{
var ext, docName, newName, saveInFile, docName;
docName = sourceDoc.name;
ext = '.svg'; // new extension for svg file
newName = "";
for ( var i = 0 ; docName[i] != "." ; i++ )
{
newName += docName[i];
}
newName += ext; // full svg name of the file
// Create a file object to save the svg
saveInFile = new File( destFolder + '/' + newName );
return saveInFile;
}
function getSVGOptions()
{
var svgSaveOpts = new ExportOptionsSVG();
//just using defaults aside from what's written below
//see http://cssdk.host.adobe.com/sdk/1.0/docs/WebHelp/references/csawlib/com/adobe/illustrator/ExportOptionsSVG.html
svgSaveOpts.embedRasterImages = true;
return svgSaveOpts;
}
@tannerhodges
Copy link

@seltzered Hey man, thanks a ton for this. Just made my life a whole lot easier.

@HaNdTriX
Copy link

HaNdTriX commented Sep 3, 2015

This is awesome! Thanks!

@uditunpluged
Copy link

this isn't working in Adobe Illustrator CC 2014

@aaronreimann
Copy link

This saved me a ton of time. Thanks

@tereshhhchenko
Copy link

tereshhhchenko commented Jun 16, 2016

It doesn't work in subfolders.

I tried " * / * .ai" as file name mask, but no result.

@Chand1er
Copy link

To get this script working with CC2015, replace line 46 with this (and don't input anything when prompted, just hit enter):
fileType = prompt( 'Select type of Illustrator files to you want to process. Eg: .ai', '.ai' );

@MarkoDeeJay
Copy link

This was just great. It saved me a LOT of time. Thank you!

Copy link

ghost commented Sep 7, 2017

Thank you! It saved me a lot of time and nerves.

@Nate-Gee
Copy link

Any chance this works for cc 2018?

@Blaapje
Copy link

Blaapje commented Feb 27, 2018

@Sqwear I can confirm this works, good stuff!

@Expl4Life
Copy link

Extended script with options for optimizing svg

function getSVGOptions() { var svgSaveOpts = new ExportOptionsSVG(); svgSaveOpts.embedRasterImages = false; svgSaveOpts.cssProperties = SVGCSSPropertyLocation.PRESENTATIONATTRIBUTES; svgSaveOpts.coordinatePrecision = 3; svgSaveOpts.fontType = SVGFontType.SVGFONT; svgSaveOpts.documentEncoding = SVGDocumentEncoding.UTF8; svgSaveOpts.fontSubsetting = SVGFontSubsetting.None; return svgSaveOpts; }

@fakepilot
Copy link

Tested with some Illustrator files, which are a bit older version, I'm getting a "Convert to Artboards" pop-up for every file.
Is it possible to remove it? Or to only choose one time for all the files?
The options that I'm seeing are "Create artboards for: 1) Legacy Artboards 2) Crop area(s) 3) Artwork Bounding Box.
Would be great to only have Crop area(s) checked... All though I can surely understand if you don't have time for this. :-D

@juanmaioli
Copy link

Hey very thanks!!!

@AhmedAbuelenin
Copy link

Thanks a lot.

@Invent55555
Copy link

Is it possible to make it so that all metadata from the Adobe Illustrator .ai file is saved in the SVG file?
How do I specify the maximum quality of 7 when exporting SVG?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment